嗨,我正在尝试编写正则表达式,但面临一些问题。有人能帮我写一本吗。
条件:
·不允许所有10位都为0。
·区号(前3位)不能是相同的数字,
·第一位和第四位不能是0或1。
/^\({0,1}[2-9]{1}[0-9]{2}\){1} {1}[2-9]{1}[0-9]{2}-{0,1}[0-9]{0,4}$/示例格式:(234) 567-7890
上面的问题与其他问题不同,因为它更侧重于使用正则表达式满足的特定条件。
发布于 2015-08-28 10:15:43
因此,首先,我应该指出,要求美国格式的电话号码是相当严格的;国际号码可以有非常不同的规则。也就是说,这个正则表达式应该能满足您的需求:
/(?:^|\D)\(([2-9])(?:\d(?!\1)\d|(?!\1)\d\d)\)\s*[2-9]\d{2}-\d{4}/首先,为了防止匹配以有效电话号码结尾但前面有多余垃圾的内容,我们匹配字符串的开头(^)或非数字(\D)。然后是区号(\()的左括号。
然后我们匹配区号的第一个数字[2-9]。
然后,我们要么匹配任何数字(\d),然后匹配除第一个数字((?!\1)\d)之外的任何数字,要么反过来匹配((?!\1)\d\d)。这样可以避免区号是三个相同的数字。
然后我们关闭括号(\)),允许(但不要求)前缀的第一个数字前面有空格(\s*) (同样是[2-9]),后面是任意两个数字(\d{2})、一个连字符和任意四个数字(\d{4})。
发布于 2015-08-28 10:30:30
让我们分成几部分,你有三个条件:
如果考虑条件3,则条件1是多余的;不考虑条件2的简单正则表达式是:
/^\([2-9]\d\d\) [2-9]\d\d-\d{4}$/假设您需要括号和空格- (555) 555-5555
解释:
H118(和)是转义文字-将匹配(和) and
现在,如果我们想在表达式中考虑条件2,我们使用
如果你想完全理解它们,请阅读一些正则表达式参考。完整的表达式是:
^\(([2-9])(?!\1\1)\d\d\) [2-9]\d\d-\d{4}$发布于 2015-08-28 09:58:58
/^\D([2-9])(?!\1\1)\d{2}\D\s+[2-9]\d{2}\s+\W\s+\d{4}$/https://stackoverflow.com/questions/32262079
复制相似问题