使用正则表达式允许除包含特定数字格式的字符串之外的任何字符串

时间:2018-05-09 13:38:38

标签: regex

我的要求:

我必须在textBox中允许任何字符串输入,但它不应包含以下任何一种格式的10位数字:

dddddddddd

OR

dddddd-dddd

我使用过的正则表达式是

^((?!\d{10})(?!\d{6}-\d{4}).)*$

它工作正常,但也不允许输入超过10位数。

1 个答案:

答案 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位之间有一个可选的-,则表示匹配失败的否定前瞻
  • .*$ - 字符串的其余部分。

注意:实际上,最后您不需要$,但为了更加清晰,您可以保留它。默认情况下,.*会匹配到行尾,如果没有换行符,则$完全是多余的。