1

断言输入中至少有 n 个但不超过 m 个字符类的正则表达式展望是什么。

举一个简单的具体例子,假设我想断言输入中有5-8 位数字,并且输入由单词字符和空格组成(即[ \w]*)。然后:

this line 123 does not match
this line 123 foo 456 matches
this line 123 % 456 does not match
this line 123 foo 456 bar 789 does not match

我已经尝试了各种组合{5,8}

^(?=(.*\d){5,8})[ \w]*$

但 的 上限8没有被应用为匹配上面的第 4 行(例如在regexpal上)。

4

2 回答 2

4

^从字符串的开头,匹配 0 个或多个非数字,然后是数字{5 to 8 times},然后是非数字,直到字符串的结尾$

^([^\d]*\d){5,8}[^\d]*$
于 2013-01-11T14:08:40.257 回答
0

我终于找到了办法。您必须使用两种前瞻性 - 一种用于下限,一种用于上限:

^(?=(.*\d){5,8})(?!(.*\d){9,})[\w ]+$
于 2013-01-11T19:55:14.553 回答