我正在研究以下正则表达式,到目前为止只理解了它的一部分。 以下是10位北美电话号码格式的正则表达式
^(\(\d{3}\)|^\d{3}[.-]?)?\d{3}[.-]?\d{4}$
开头的胡萝卜字符和最后的美元会使这个正则表达式只允许10位数字吗?
第二个胡萝卜字符在那里,因为它意味着下一个3位数字的开头而且它的遗漏做了我试图删除它但没有发现任何变化?
垂直条形或竖线字符表明我没有得到它?
第一个反向斜线用于停止,第二个用于3位数。
答案 0 :(得分:2)
^(\(\d{3}\)|^\d{3}[.-]?)?\d{3}[.-]?\d{4}$
^
- 查找匹配项的行的开头,它是一个锚点。 (
- 开始匹配捕获以最终获取要提取的文本/信息。 \(
- 寻找文字括号。\d
- 正则表达式替换,指定查找数字或数字{3}
- 在前一项上表达的量词,在这种情况下,它说找到三位数。可以改写为\d\d\d
。因此,请考虑这一句话\d{3}
意味着找到三位数。\)
寻找文字的结尾括号。|
- 正则表达式或者,到目前为止它在两个括号内的匹配3数字,现在做Or
.... ^
- 再次开始行,建议不必以这种方式指定锚点,只需在开头留下一个,然后将Or作为子匹配。\d{3}
- 与上述相同。[
- 表示一组字符的开头。这就像文字\
情况,但对于多个字符。集[ ]
中的所有内容都可以是这些字符中的任何一个。.-
句点(。)和短划线的字面字符。不要与其他情境中的.
混淆,因为那时候any character or whitespace
就是]
。在一个集合中,就像它现在一样,它只意味着一个文字期间。[.-]
- 结束。该集合为?
,表示一组两个可能的字符,只有一个是mathc。)
量词表示前一个声明,即集合可能匹配或不匹配。?
子匹配捕获结束。 $
子匹配可能会也可能不会发生。 我再次认为用户在括号中出错了。 ....与上述相同的模式,相同的解释。
答案 1 :(得分:1)
# ^(?:\(\d{3}\)|\d{3}[.-]?)?\d{3}[.-]?\d{4}$
# Optional area code
^ # Beginning of string
(?: # Cluster group start
\( \d{3} \) # '(' 3-digit area code ')'
| # or,
\d{3} [.-]? # just 3-digit area code, optional dot or dash
)? # Cluster group end
# 7 digit phone number
\d{3} [.-]? \d{4} # ( 3-digits, optional dot or dash, 4-digits )
$ # End of string