为了账号安全,请及时绑定邮箱和手机立即绑定

匹配一个3个或更多字母单词而不是某个单词的单词

匹配一个3个或更多字母单词而不是某个单词的单词

PHP
绝地无双 2021-05-07 14:16:52
我需要匹配“ do you”之后的3个或更多字母单词,而不是“ lie”这个单词,但是当我尝试少于3个单词时,它不能正常工作。我该如何解决?$text = "do you a";if (preg_match("~(do you) (?!lie){3,}~", $text)) { echo "it matched!"; }如果不匹配,它会回显“匹配”。
查看完整描述

2 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

您的模式不正确。您不能将定量词应用于否定的前瞻性模式,而必须这样编写模式,

(do you) (?!lie\b)[a-zA-Z]{3,}

另外,您应该使用单词边界\b使其不只是匹配,lie而应使其匹配其他单词,例如lied

正则表达式演示

PHP代码演示

$text = "do you a";

if (preg_match("~(do you) (?!lie\b)[a-zA-Z]{3,}~", $text)) { echo "it matched! ".$text; }

$text = "do you lie";

if (preg_match("~(do you) (?!lie\b)[a-zA-Z]{3,}~", $text)) { echo "it matched! ".$text; }

$text = "do you lied";

if (preg_match("~(do you) (?!lie\b)[a-zA-Z]{3,}~", $text)) { echo "it matched! ".$text; }

仅打印此,


it matched! do you lied


查看完整回答
反对 回复 2021-05-28
  • 2 回答
  • 0 关注
  • 188 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信