Java8 Nashorn 正则表达式引擎的奇怪异常

Strange exception with Java8 Nashorn regex engine

I 运行 在使用 Nashorn Javascript 引擎解析文本时出现 st运行ge java.lang.ArrayIndexOutOfBoundsException: 64 错误。要在 JJS 中重现问题:

var col0 = " xxxx,         xxx xxxxxx xxxxxxxxx xxxxxxx, xxxx xxxxx xxxxx ";
var name = /([^\s]+),(.*)+/.exec(col0);

测试字符串的其他一些变体也会导致相同的异常,例如。

var col0 = "x,         xxxxxxxxxx xxxxxxxxx xxxxxxx, xxxx xxxxx xxxxx ";

发生在 JDK8 版本 25、31 和 40ea(在 Windows 8 上)。

这是我们的正则表达式实现中的错误。我已经为它提交了一个错误:

https://bugs.openjdk.java.net/browse/JDK-8073818

更新:您可以使用 -Dnashorn.regexp.impl=jdk 选项作为解决方法。这使得 Nashorn 使用 java.util.regex 包而不是 Joni,后者不会显示此错误。