【发布时间】:2016-12-09 12:22:03
【问题描述】:
我正在使用常见的正则表达式来验证电子邮件。模式是这样的:
(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-\011\013\014\016-\177])*")@((?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+[A-Z]{2,6}\.?$)|\[(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\]$
以防万一,我确实在 java 中添加了所有 \ 转义,所以这是 java 评估的最终模式。它适用于普通的在线正则表达式评估器,但在 Java 中运行时会抛出
java.util.regex.PatternSyntaxException:索引 103 附近的转义序列非法/不受支持
这是 \177 代码。为什么会这样,为什么该代码是非法的,为什么它可以在在线验证器中工作?
【问题讨论】:
-
你想通过
\177代表什么?