正则表达式,总是返回false

Hac*_*ker 5 php regex

可能重复:
正则表达式永远不能匹配?

我如何编写一个在php中始终返回false的正则表达式.

我想要这个bcos.我想显示一个错误消息带有一个表单规则...所以我喜欢这个..

if($values['result_msg'] == 'ERROR')
                    {
                    $form->registerRule('just_check','regex','/$^/');                       
                    $form->addRule('abc', 'Please enter valid Model Number.','just_check');
                    }
Run Code Online (Sandbox Code Playgroud)

Pet*_*ton 6

我不知道你为什么要这样做,但是这样做:

(?!x)x
Run Code Online (Sandbox Code Playgroud)

第一位(?!...... )是一个负向前瞻,表示"确保这个位置与这个前瞻的内容不匹配",内容是x,然后最后x说"匹配x" - 因为这两个是对立的,表达式将从不匹配.

您可能还想添加开始/结束标记,即

^(?!x)x$
Run Code Online (Sandbox Code Playgroud)

你可以x用几乎任何东西交换它们,只要两个位都是等价的.

还有很多其他方法可以做到这一点,基本上你只是将两个相互排斥的条件彼此相邻以匹配相同的位置,并且正则表达式将无法匹配 - 请参阅Mark的答案以获取更多示例.


Mar*_*ers 6

有很多方法可以做到:

  • /(?=a)b/

这无法匹配,因为它搜索的是a和b两个字符.

  • /\Zx\A/

这无法匹配,因为字符串的结尾不能在字符串的开头之前到来.

  • /x\by/

这无法匹配,因为字符边界不能在字符x和之间y.

  • @Pekka:在PHP中,必须在$和^之间有一个字符,否则它与空字符串(例如$ x ^`)匹配。 (2认同)