我正在研究下面的正则表达式,到目前为止只理解了其中的一部分。
^(\(\d{3}\)|^\d{3}[.-]?)?\d{3}[.-]?\d{4}$
字符串1.开头的脱字符和最后的美元将使这个正则表达式只允许10位数?1.第二个插入字符是因为它意味着下一个3位数的开始,它的遗漏做什么,我试图删除它,但没有发现任何变化?1.竖条或管道字符做什么我不明白吗?1.第一个反斜杠是paranethesis和第二个为3位数。
0ve6wy6x1#
字符串
^
(
\(
\d
{3}
\d\d\d
\d{3}
\)
|
Or
[
\
[ ]
.-
.
any character or whitespace
]
[.-]
?
)
和上面一样的模式,同样的解释。
$
txu3uszq2#
# ^(?:\(\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
2条答案
按热度按时间0ve6wy6x1#
字符串
^
-查找匹配的行的开头,它是一个锚。(
-开始匹配捕获以最终获取要提取的文本/信息。\(
-查找文字括号。\d
- Regex Replacement,指定查找 digit 或数字{3}
-一个在前一项上表示的量词,在本例中它表示查找三个数字。可以重写为\d\d\d
。因此考虑这一条语句\d{3}
表示查找三个数字。\)
查找文字结尾括号。|
- Regex或者,到目前为止,它在两个括号内匹配3个数字,现在做Or
....^
-再次行的开头,建议锚不必以这种方式指定,只需在开头留下一个然后将Or作为子匹配。\d{3}
-同上。[
-表示一组字符的开头。这类似于文字\
的情况,但用于多个字符。[ ]
集合中的所有内容都可以是这些字符中的任何一个。.-
句点(.)和破折号的文字字符。不要与其他上下文中的.
混淆,当时它意味着any character or whitespace
。在一个集合中,就像现在一样,它意味着一个 * 文字 * 句点。]
-集合的结尾。集合是[.-]
,表示两个可能的字符的集合,只有一个可以匹配。?
一个量词,表示前面的声明,即集合,可以匹配,也可以不匹配。)
子匹配捕获结束。?
子匹配可能发生也可能不发生。* 我再次相信用户在括号中的错误 *。和上面一样的模式,同样的解释。
$
行尾锚。这表示整个文本发送端必须符合模式或失败。txu3uszq2#
字符串