正则表达式:我怎样才能找到以Ä,Ö,Ü...开头的单词?

时间:2014-10-19 18:29:51

标签: javascript regex

我在文本中搜索单词:

var newWords = data.match(/\b[^\s\d,-.:!?{}\"“\[\]']+/g);

这是有效的,除了以Ä,Ö,Ü等字母开头的单词,这在德语中是完全可能的。

我真正想做的是写上面的搜索,如

var newWords = data.match(/\b[^\W\d]+/g);

但是在没有ä,ö,ü的情况下,这让我完全没有。 ß也不见了。

有一个很好的解决方案吗?

2 个答案:

答案 0 :(得分:2)

作为简单的解决方案,我建议使用

var newWords = data.match(/[\w\xc0-\xd6\xd8-\xf6\xf8-\xff]+/g);

这匹配在任何情况下仅由字母AZ组成的字符串以及代码页ISO/IEC 8859-1中代码值为192到255的所有字母,与Windows-1252类似,但{{3}除外只要data字符串只包含北美和西欧文本,就可以{} {}和<{p}}。

使用表达式

var newWords = data.match(/[\w\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u00ff]+/g);

ISO / IEC 8859-1中的特殊语言特定字母的Unicode值分别是Windows-1252,并且因此表达式忽略了其他语言(如东欧语言)的其他字母。

答案 1 :(得分:0)

您可以使用要匹配的ascii代码对它们进行简单匹配:

^\xD6nder$

Regular expression visualization

Debuggex Demo

\xD6将是ÖD6是ascii代码214的十六进制)。您可以在此处查找更多十六进制值:http://www.torsten-horn.de/techdocs/ascii.htm