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/

10-10 07:48