正则表达式可以匹配非英语字符?

时间:2020-03-06 14:53:22  来源:igfitidea点击:

在正则表达式中匹配非英语字符的最简单方法是什么?我想匹配输入字符串中的所有单词,但是语言可能不是英语,因此我需要匹配,?,?和?之类的东西。同样,这是在Javascript / jQuery中,因此任何解决方案都需要适用于此。

解决方案

所有启用Unicode的Regex风格都应具有与所有Unicode字母匹配的特殊字符类(如\ w)。在这里看看特定口味。

我们可以使用与其他任何字符匹配相同的方法,但是使用\ uXXXX,其中XXXX是字符的Unicode码。

看着:
http://unicode.org/charts/charindex.html

http://unicode.org/charts/

http://www.decodeunicode.org/

这应该做到这一点:

[^\x00-\x7F]+

它与ASCII字符集(0-127,即0x0至0x7F)中不包含的任何字符匹配。

我们可以使用Unicode执行相同的操作:

[^\u0000-\u007F]+

对于unicode,我们可以查看以下2个资源:

  • Unicode范围的代码表列表
  • 此工具创建一个按Unicode块过滤的正则表达式。

正则表达式,Unicode和Javascript的情况糟透了。程序员必须依靠外部库来识别""是一个单词,甚至""是一个字母,这是荒谬的。

但事实如此。

这个人写了一个很好的库来处理Javascript Regexes中的Unicode:

http://blog.stevenlevithan.com/archives/javascript-regex-and-unicode

Unicode东西是此正则表达式库的插件:

http://xregexp.com/

这是有关Unicode扩展的帖子:

http://blog.stevenlevithan.com/archives/xregexp-unicode-plugin

扩展页面本身:

http://xregexp.com/plugins/

很棒的工作,但仍然让我感到困惑,Java脚本在这方面是如此落后。

(他为奥赖利(O'Reilly)撰写了有关该主题的书,因此很有可能他知道自己在说什么。)

他的实现方式是通过添加具有某些属性的字符表。然后,当用他的库构造一个正则表达式时,\ p {charclass}被替换为[[allthecharactersintheclass]