3

1)如何正则表达式验证用户输入是否包含来自 A 组的任何字符组合并且不包含来自另一个 D 组的任何字符?
2) 还要检查字符串长度是否在 2 到 255 之间

换句话说,对于所有字符串字符:A AND NOT D。

我从服务器收到两组字符(白名单和黑名单),需要根据这些字符验证用户输入。我不能影响设计,必须忍受它。由于其他设计限制,我还必须使用正则表达式。


这是我到目前为止所得到的(根本不工作):

/^(?![23]+)[0-9]{2,255}$/

23将是简单的字符黑名单
0-9将是简单的字符白名单

一些例子:

3014567890 --> 失败,3 存在
0145678902 --> 失败,2 存在
0123456789 --> 失败,2 和 3 存在
014567890 --> ok
88774411489 --> ok
5 --> 失败,没有足够的字符
1abc - -> 失败,abc 非法字符
ab1c --> 失败,abc 非法字符
abc1 --> 失败,abc 非法字符


谢谢!

4

1 回答 1

4

你快到了,前瞻断言需要一些工作:

/^(?!.*[23])[0-9]{2,255}$/

这样,如果字符串中有(至少)一个23任何位置(即在任意数量的字符 ( .*) 之后),则否定前瞻中的正则表达式匹配,从而导致断言失败。

In this (apparently) simplified example, you could of course just have used /^[014-9]{2,255}$/.

于 2013-03-12T12:03:21.760 回答