【发布时间】:2009-04-02 10:34:35
【问题描述】:
继续发帖 Regular expression to allow a set of characters and disallow others
有谁知道为什么会出现以下情况?
创建正则表达式时出现以下错误:
[^@*–’”“\r\nœçsÇSgGšcrŠRNEŽDTCnežuUIti—¿„”]+
并在输入字段中输入任何这些受限字符
java.lang.ArrayIndexOutOfBoundsException
at org.apache.regexp.RECompiler$RERange.delete(RECompiler.java:1326)
at org.apache.regexp.RECompiler$RERange.remove(RECompiler.java:1417)
at org.apache.regexp.RECompiler$RERange.include(RECompiler.java:1459)
at org.apache.regexp.RECompiler$RERange.include(RECompiler.java:1470)
at org.apache.regexp.RECompiler.characterClass(RECompiler.java:699)
at org.apache.regexp.RECompiler.terminal(RECompiler.java:863)
at org.apache.regexp.RECompiler.closure(RECompiler.java:942)
at org.apache.regexp.RECompiler.branch(RECompiler.java:1151)
at org.apache.regexp.RECompiler.expr(RECompiler.java:1203)
at org.apache.regexp.RECompiler.compile(RECompiler.java:1281)
at org.apache.regexp.RE.(RE.java:495)
at org.apache.regexp.RE.(RE.java:480)
但是这个表达式可以正常工作
[^@*–’”“\r\nœçsÇSgGšcrŠRN]+
还有,
[^@*–’”“\r\nœçsÇSgGšcrŠR„”]+
有效但
[^@*–’”“\r\nœçsÇSgGšcrŠRNE]+
不起作用并给出上述错误。
像上面那样禁止使用的字符数有限制吗?
问候, 乌迪特南
【问题讨论】:
-
对我来说听起来像是编码问题,但 Java 不是我的事
-
如果它让您感觉更好,它可以与 .NET Regex 引擎一起使用。我怀疑这是特定 Java Regex 实现中的错误。
-
@Udit - 当你省略“E”时会发生什么?