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个字符。     

要回复问题请先登录注册