代码之家  ›  专栏  ›  技术社区  ›  Hacker

总是返回false的正则表达式[重复]

  •  3
  • Hacker  · 技术社区  · 14 年前


    What regular expression can never match?

    我想要这个bcos。我想显示一个没有表单规则的错误消息…所以我这样做了。。

    if($values['result_msg'] == 'ERROR')
                        {
                        $form->registerRule('just_check','regex','/$^/');                       
                        $form->addRule('abc', 'Please enter valid Model Number.','just_check');
                        }
    
    3 回复  |  直到 8 年前
        1
  •  6
  •   Mark Byers    14 年前

    有很多方法可以做到:

    • /(?=a)b/

    • /\Zx\A/

    这将失败,因为字符串的结尾不能早于字符串的开头。

    • /x\by/

    这无法匹配,因为字符之间不能有单词边界 x y

        2
  •  6
  •   Community CDub    8 年前

    我不知道 为什么? 你想这么做,但这个可以:

    (?!x)x
    

    第一位 (?! .. ) 是表示“确保此位置与此展望的内容不匹配”的否定展望,其中内容是 x 说“匹配x”-因为这两个是对立的,表达永远不会匹配。

    ^(?!x)x$
    

    你可以把这两个 只要这两个位元是相等的,任何东西都可以。

    有很多其他的方法可以做到这一点,基本上你只需要把两个相互排斥的条件放在一起匹配同一个地方,正则表达式将无法匹配-看到了吗 Mark's answer

        3
  •  0
  •   Johnny Saxon    14 年前

    试试这个:

    $.^