微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Javascript unicode希腊文正则表达式

如何解决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 举报,一经查实,本站将立刻删除。