Javascript 正则表达式:如何找到以Ä;开头的单词ÖÜ。。。?

Javascript 正则表达式:如何找到以Ä;开头的单词ÖÜ。。。?,javascript,regex,Javascript,Regex,我在文本中搜索具有以下内容的单词: var newWords = data.match(/\b[^\s\d,-.:!?{}\"“\[\]']+/g); 这是可行的,除了以字母开头的单词,如Ä、Ö、Ü,这在德语中是完全可能的 我真正想做的,是写上面的搜索像 var newWords = data.match(/\b[^\W\d]+/g); 但这让我的话里完全没有了ä,ö,ü。ß也不见了 有一个很好的解决方案吗?您可以使用想要匹配的ascii码简单地匹配它们: ^\xD6nder$ \xD

我在文本中搜索具有以下内容的单词:

var newWords = data.match(/\b[^\s\d,-.:!?{}\"“\[\]']+/g);
这是可行的,除了以字母开头的单词,如Ä、Ö、Ü,这在德语中是完全可能的

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

var newWords = data.match(/\b[^\W\d]+/g);
但这让我的话里完全没有了ä,ö,ü。ß也不见了


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

您可以使用想要匹配的ascii码简单地匹配它们:

^\xD6nder$


\xD6
将是
Ö
D6
是ascii码的十六进制
214
)。您可以在此处查找更多十六进制值:

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

var newWords = data.match(/[\w\xc0-\xd6\xd8-\xf6\xf8-\xff]+/g);
这将匹配在任何情况下仅由字母A-Z组成的字符串以及代码页中代码值为192到255的所有字母,该代码页类似于和,但
数据
字符串仅包含北美和西欧文本

带着表情

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

ISO/IEC 8859-1(分别为Windows-1252)中特殊语言特定字母的Unicode值已明确指定,因此表达式将忽略其他语言(如东欧语言)的其他字母。

使用类似的替代正则表达式引擎将允许您使用Unicode字符类
\p{L}
(可以匹配任何语言的任何字母,包括Umlauts)。使用vanilla JS regex,您必须提及任何您想要明确匹配的字母(
[öäüß\w]
)-并且单词边界在Umlauts中永远不会起作用。谢谢。我为node.js安装了它。但是我想不出它的语法。。。找不到常规匹配方法。。。我尝试过:var w=XRegExp('\b\\p{L}+'),newWords=XRegExp.exec(数据,w);结果为空数组。怎么了?您是对的,XRegExp没有重新实现
\b
,因此单词边界不起作用。您仍然可以使用XRegExp(假设您包括Unicode插件),如下所示