我正在写正则表达式以验证联系电话。我正在使用以下正则表达式进行验证:
^(?!\b(0)\1+\b)(?!(-))([+]?(\d{1,3})?[\s.-]?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$)
我不想使用此正则表达式匹配“ +00(000)000-0000”之类的输入。 正则表达式不应与“ +00(000)000-0000”匹配。 我试图通过使用“单词边界不应该包含全零”来解决此问题,但是不确定如何做到这一点。
请提出解决方法。任何指针都会有所帮助。
谢谢
答案 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