如何使用正则表达式检查单词边界是否全为零

时间:2019-03-04 06:45:48

标签: regex

我正在写正则表达式以验证联系电话。我正在使用以下正则表达式进行验证:

^(?!\b(0)\1+\b)(?!(-))([+]?(\d{1,3})?[\s.-]?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$)

我不想使用此正则表达式匹配“ +00(000)000-0000”之类的输入。 正则表达式不应与“ +00(000)000-0000”匹配。 我试图通过使用“单词边界不应该包含全零”来解决此问题,但是不确定如何做到这一点。

请提出解决方法。任何指针都会有所帮助。

谢谢

2 个答案:

答案 0 :(得分:0)

您可以在数字旁边使用空格()+-。因此,如果您禁止字符串仅包含这些符号和0数字,那么您将获得想要的效果。

(?![0\s()+-]+$)之后添加^否定超前行,以便可以在字符串的开始处执行它。

^(?![0\s()+-]+$)(?!-)([+]?(\d{1,3})?[\s.-]?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$)

请参见regex demo

答案 1 :(得分:0)

如果您要在电话号码全为零的情况下拒绝匹配,则可以使用正向(?=.*[1-9])

来强制存在非零号码
^(?=.*[1-9])(?!-)([+]?(\d{1,3})?[\s.-]?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$)
 ^^^^^^^^^^^ This ensures the number have at least one non-zero number

Demo

相关问题