在JavaScript中,这个正则表达式很容易匹配字母和重音:
text.match(/[a-z\u00E0-\u00FC]+/i);
Run Code Online (Sandbox Code Playgroud)
并且只有小写字母和重音符没有i选项:
text.match(/[a-z\u00E0-\u00FC]+/);
Run Code Online (Sandbox Code Playgroud)
但是正确的正则表达式只匹配大写字母和重音符号是什么?
编辑:就像下面已经提到的答案一样,上面的正则表达式也匹配其他一些标志,并且错过了一些特殊的重音字符,如ý和Ý,ć和Ć等等.
范围U+00C0- U+00DC应该是大写的等效U+00E0-U+00FC
所以这text.match(/[A-Z\u00C0-\u00DC]+/);应该是你正在寻找的.
像graphemica这样的网站可以帮助您自己确定所需的范围.
编辑 就像其他答案已经提到的那样,这也符合其他一些迹象.
替换a-z为A-Z和\\u00E0-\\u00FCwith\\u00C0-\\u00DC以匹配相同的大写字母和text.match(/[a-z\\u00E0-\\u00FC]+/);小写字母。
然而!
\n这不是一个正确的实现,无论是小写字母还是大写字母,例如,您的小写匹配包括\xc3\xb7(除号),它根本不是字母,而我的大写字符串将匹配\xc3\x97(乘号),它看起来像 X,但实际上也不是字母。
\n除此之外,您还缺少诸如\xc3\xbdand \xc3\x9d、\xc4\x87and\xc4\x86以及许多其他字符之类的字符。