【问题标题】:Regex to not Match Names正则表达式不匹配名称
【发布时间】:2012-11-21 14:17:07
【问题描述】:

所以我的论坛允许我使用正则表达式来允许某些用户名注册,但我想反其道而行之,并阻止任何不匹配,这是系统本身不允许的。

我如何匹配[a-zA-Z]+[0-9]{4}的模式?

意思是说它会返回false

FOobar1234
bar5678

我已经尝试过,但无法正常工作。


有点像[^a-zA-Z]+ 会为foobar 返回false(匹配a-z),但最后也是4 位数字。

【问题讨论】:

    标签: regex


    【解决方案1】:

    使用否定前瞻:

    ^(?![a-zA-Z]+\d{4})
    

    请注意,这实际上并不匹配文本,如果字符串符合您的条件,它只会返回一个零宽度匹配。如果您也想匹配文本,请使用:

    ^(?![a-zA-Z]+\d{4}$).+$
    

    【讨论】:

      【解决方案2】:

      您可以使用否定前瞻断言:

      ^(?![a-zA-Z]+[0-9]{4}$)
      

      一般:

      ^(?!<pattern>$)
      

      仅匹配那些与正则表达式 &lt;pattern&gt; 不匹配的字符串。

      See it

      【讨论】:

        猜你喜欢
        • 2016-01-22
        • 1970-01-01
        • 2013-02-17
        • 2013-12-04
        • 1970-01-01
        • 2021-11-21
        • 2018-04-18
        • 2016-03-25
        • 2018-10-11
        相关资源
        最近更新 更多