正则表达式不匹配名称

时间:2012-11-21 06:09:21

标签: regex

所以我的论坛允许我使用正则表达式来允许某些用户名注册,但我想反过来阻止任何不匹配,系统本身不允许这样做。

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

意味着它会返回false,比如

FOobar1234
bar5678

我已经尝试但无法使其发挥作用。


[^a-zA-Z]+foobar(匹配a-z)返回false的方式排序,但最后也有4位数。

2 个答案:

答案 0 :(得分:3)

使用否定前瞻:

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

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

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

答案 1 :(得分:2)

你可以使用负前瞻断言:

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

一般来说:

^(?!<pattern>$)

仅匹配与正则表达式<pattern>不匹配的字符串。

See it