1

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

我怎么能匹配的模式[a-zA-Z]+[0-9]{4}

这意味着它会返回错误,比如说

FOobar1234
bar5678

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


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

4

2 回答 2

3

使用负前瞻:

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

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

^(?![a-zA-Z]+\d{4}$).+$
于 2012-11-21T06:11:16.750 回答
2

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

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

一般来说:

^(?!<pattern>$)

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

看见

于 2012-11-21T06:11:46.827 回答