-1

我有一种情况,有人为我提供了很多 XML 风格的正则表达式,我需要使用这些正则表达式在 Java 和 Javascript 中进行一些验证。处理那些 XML 风格的正则表达式的最佳原因是什么,因为 XML 风格的正则表达式和 Java 风格或 ECMA(Javascript)风格之间存在差异?

例子

正则表达式:

[A-z]

爪哇

"A" // true
"Ab" // false
"a" // true

Javascript

"A" // true
"Ab" // true
"a" // true
4

1 回答 1

1

您已经链接到 XML 和 ECMAScript 样式正则表达式之间的比较表,因此您可以轻松找出差异。

有一些相关的区别:

  • \d并且\w仅匹配 JavaScript(和 Java)中的 ASCII 数字/字母数字。
  • JavaScript 不像 XML 和 Java 那样支持 Unicode 字符属性(\p{L}等)。
  • Java 和 JavaScript 都不支持 XML 字符转义(如\iand \c)或字符类减法 ( [a-z-[aeiou]])。

因此,如果您的 XML 正则表达式要使用这些功能中的任何一个,您将无法轻松地转换它们。

您可以通过使用带有 Unicode 插件的 Steve Levithan 的 XRegExp 包来修复 Unicode 问题,至少可以修复部分问题。在 Java 7 中,您可以为和开启 Unicode 匹配,这样应该可以解决您的大部分潜在问题。\d\w

但是,可能存在不那么明显的细微实现差异,因此您肯定需要进行一些测试。

于 2012-12-06T10:38:32.343 回答