如何解决Javascript unicode希腊文正则表达式
| 我想在希腊文本中使用此正则表达式new RegExp(\“ \\ b \” + pat + \“ \\ b \”),但\“ \\ b \”元字符仅支持ASCII字符。 我尝试了XregExp库,但没有设法解决问题。 任何建议将不胜感激。解决方法
我认为这对您的回答很有帮助。,
<script src=\"xregexp.js\"></script>
<script src=\"xregexp-unicode-base.js\"></script>
<script>
var unicodeWord = XRegExp(\"^\\\\p{L}+$\");
unicodeWord.test(\"Русский\"); // true
unicodeWord.test(\"日本語\"); // true
unicodeWord.test(\"العربية\"); // true
</script>
<!-- \\p{L} is included in the base script,but other categories,scripts,and blocks require token packages -->
<script src=\"xregexp-unicode-scripts.js\"></script>
<script>
XRegExp(\"^\\\\p{Katakana}+$\").test(\"カタカナ\"); // true
</script>
请参考以下位置:
http://xregexp.com/plugins/
,因此,答案就是,您不能使用JavaScript本机机制或使用这些机制以所需方式匹配单词的任何库。正如您已经说过的,\\ b匹配单词。单词必须由单词字符组成。而且在JavaScript中(实际上其他正则表达式实现中,单词字符是a-z,A-Z,0-9和_。但是许多其他语言只是以JavaScript的另一种方式实现\\ b元字符。
答案“ JavaScript不支持Unicode \”有点容易,实际上是完全错误的。 JavaScript只是不对字符类使用unicode。如果JavaScript不支持unicode,则您甚至都不能在String文字中使用unicode字符,当然,这在JavaScript中是可能的。
根据ECMA 262标准(ECMAScript)(第15.10.2.6节):
[...]
生产Assertion :: \\ b通过返回一个带State的内部AssertionTester闭包来求值
参数x并执行以下操作:
令e为x的endIndex。
调用IsWordChar(e-1)并将a作为布尔结果。
调用IsWordChar(e)并让b为布尔结果。
如果a为true而b为false,则返回true。
如果a为false而b为true,则返回true。
返回false。
[..]
抽象运算IsWordChar使用整数参数e并执行以下操作:
如果e == –1或e == InputLength,则返回false。
令c为字符Input [e]。
如果c是下面的63个字符之一,则返回true。
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 _
返回假
这只是表明\\ b使用\“ isWordChar \”算法来检查您尝试匹配的内容是否实际上是一个单词。在\“ isWordChar \”的定义中,您可以看到对于\“ isWordChar \”哪些字符将返回true的确切定义。
在我看来,这与所使用的字符集完全无关。它既不是ASCII也不是UNICODE编译的。就是这63个字符。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。