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


当前回答

这应该做到:

[^\x00-\x7F]+

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

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

[^\u0000-\u007F]+

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

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

其他回答

Jeremy Ruten给出的答案很好,但我认为这并不是Paul Wicks所寻找的。如果我没理解错的话,Paul问的是匹配非英语单词können或móc的表达式。Jeremy的正则表达式只匹配非英文字母,所以需要进行小的改进:

([^\x00-\x7F]|\w)+

or

([^\u0000-\u007F]|\w)+

这个[^\x00-\x7F]和这个[^\u0000-\u007F]部分允许正则表达式匹配非英文字母。

这(|)是逻辑或,\w是英文字母,所以([^\u0000-\u007F]|\w)将匹配单个英文或非英文字母。

在表达式末尾的+表示它可以重复,因此整个表达式允许所有英语或非英语字母匹配。

这里您可以用各种字符串测试第一个表达式,这里是第二个表达式。

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

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

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

http://unicode.org/charts/

http://www.decodeunicode.org/

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

([^\t]+)\t

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

这应该做到:

[^\x00-\x7F]+

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

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

[^\u0000-\u007F]+

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

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