我的要求:
我必须在textBox中允许任何字符串输入,但它不应包含以下任何一种格式的10位数字:
dddddddddd
OR
dddddd-dddd
我使用过的正则表达式是
^((?!\d{10})(?!\d{6}-\d{4}).)*$
它工作正常,但也不允许输入超过10位数。
答案 0 :(得分:1)
((?!\d{10})(?!\d{6}-\d{4}).)*
是tempered greedy token,匹配任何char,0或更多次,不会启动10位或6位+ -
+ 4位字符序列。它“禁止”字符串包含这些模式。
您可以使用
^(?!\d{6}-?\d{4}$).*$
请参阅regex demo。
<强>详情
^
- 字符串的开头(?!\d{6}-?\d{4}$)
- 如果整个字符串是10位数,并且在第6位和第7位之间有一个可选的-
,则表示匹配失败的否定前瞻.*$
- 字符串的其余部分。注意:实际上,最后您不需要$
,但为了更加清晰,您可以保留它。默认情况下,.*
会匹配到行尾,如果没有换行符,则$
完全是多余的。