在正则表达式中匹配非ascii字符的最简单方法是什么?我想在输入字符串中单独匹配所有单词,但语言可能不是英语,所以我需要匹配ü、ö、ß和ñ之类的东西。此外,这是在Javascript/jQuery,所以任何解决方案将需要应用于此。


当前回答

所有支持Unicode的Regex类型都应该有一个特殊的字符类,比如\w,可以匹配任何Unicode字母。看看你的特殊口味吧。

其他回答

这应该做到:

[^\x00-\x7F]+

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

你可以用Unicode做同样的事情:

[^\u0000-\u007F]+

对于unicode,您可以查看以下两个资源:

Unicode范围的代码图表列表 此工具用于创建一个由Unicode块过滤的正则表达式。

您使用与任何其他字符匹配相同的方法,但是您使用\uXXXX,其中XXXX是字符的unicode号。

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

http://unicode.org/charts/

http://www.decodeunicode.org/

正则表达式、Unicode和Javascript的情况糟透了。程序员必须依赖外部库来识别“Αλφα”是一个单词,甚至“é”是一个字母,这是荒谬的。

但事情就是这样。

这家伙写了一个很好的库来处理Javascript正则表达式中的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/

很棒的工作,但Javascript在这方面的落后仍然让我感到沮丧。

(他为奥莱利写了一本关于这个话题的书,所以他很可能知道自己在说什么。)

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

我有一个问题与\p工作如预期,所以我只是使用了不同的策略,如:

([^\t]+)\t

找到任何不是制表符,直到下一个制表符…显然,这取决于你的搜索源,但你明白我的意思。现在我不需要弄清楚unicode字符什么有用,什么没用等等。

所有支持Unicode的Regex类型都应该有一个特殊的字符类,比如\w,可以匹配任何Unicode字母。看看你的特殊口味吧。