在 Introducing regular expression
的第 1 章中,我看到了这样的正则表达式:
^(\(\d{3}\)|^\d{3}[.-]?)?\d{3}[.-]?\d{4}$
我对它有点困惑,因为第二个
^
对我来说看起来是多余的。 |
将括号内的两个选项 \(\d{3}\)
或 ^\d{3}[.-]?
分开,括号外还有一个 ^
,我理解为匹配行首,所以我认为 ^
中的第二个 ^\d{3}[.-]?
不需要匹配行首.有没有人对此有想法? 最佳答案
它看起来确实是多余的,但有一种可能的解释是有效的(尽管考虑到上下文没有意义)。
您只在问题中包含了正则表达式模式;您没有向我们展示的是是否正在使用任何修饰符。
如果您使用 m
修饰符将正则表达式解析器切换到多行模式,则 ^
和 $
anchor 会更改其含义,以便它们与 行以及整个字符串的开始和结束 匹配。
因此,如果您的表达式使用 m
修饰符,额外的 ^
会告诉它在该特定实例中寻找额外的换行符。所以它会影响表达。
但最终,看看你引用的表达实际上做了什么,我怀疑这是否是意图;正如你所假设的,它看起来好像基本上是一个错误。
关于regex - 这个替代字符串中的第二个 `^` 是多余的吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19789633/