【发布时间】:2012-11-21 14:17:07
【问题描述】:
所以我的论坛允许我使用正则表达式来允许某些用户名注册,但我想反其道而行之,并阻止任何不匹配,这是系统本身不允许的。
我如何不匹配[a-zA-Z]+[0-9]{4}的模式?
意思是说它会返回false
FOobar1234
bar5678
我已经尝试过,但无法正常工作。
有点像[^a-zA-Z]+ 会为foobar 返回false(匹配a-z),但最后也是4 位数字。
【问题讨论】:
标签: regex
所以我的论坛允许我使用正则表达式来允许某些用户名注册,但我想反其道而行之,并阻止任何不匹配,这是系统本身不允许的。
我如何不匹配[a-zA-Z]+[0-9]{4}的模式?
意思是说它会返回false
FOobar1234
bar5678
我已经尝试过,但无法正常工作。
有点像[^a-zA-Z]+ 会为foobar 返回false(匹配a-z),但最后也是4 位数字。
【问题讨论】:
标签: regex
使用否定前瞻:
^(?![a-zA-Z]+\d{4})
请注意,这实际上并不匹配文本,如果字符串符合您的条件,它只会返回一个零宽度匹配。如果您也想匹配文本,请使用:
^(?![a-zA-Z]+\d{4}$).+$
【讨论】:
您可以使用否定前瞻断言:
^(?![a-zA-Z]+[0-9]{4}$)
一般:
^(?!<pattern>$)
仅匹配那些与正则表达式 <pattern> 不匹配的字符串。
【讨论】: