使用Lookahead正则表达式时的模式异常

时间:2019-03-10 04:52:29

标签: java regex

我有以下正则表达式来验证字符串中的条件,我将其写在在线正则表达式验证器上,但是当我在Java代码中使用它时,会出现异常:

"(^([a-z]{1,6})(?(?=(_))(([_])([0-9]{0,4})?)|[a-zA-Z]{0,})[a-zA-Z]{0,}?@sample[.]com)"

异常是线程“ main”中的异常java.util.regex.PatternSyntaxException:索引16附近的未知内联修饰符 (^([az] {1,6})(?(?=())(([[])([0-9] {0,4})?)| [a- zA-Z] {0,})[a-zA-Z] {0,}?@ sample [。] com)

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

(^([a-z]{1,6})(?(?=(_))(([_])([0-9]{0,4})?)|[a-zA-Z]{0,})[a-zA-Z]{0,}?@sample[.]com)
               |  
               ^ --- if clause is not supported in JAVA

您的问题是因为(?(?=)

如果您是非捕获组,则应该为(?:(?=)

Java不支持if clause (?(?=))。 PCRE支持这一点。