在JavaScript中,这个正则表达式很容易匹配字母和重音:
text.match(/[a-z\u00E0-\u00FC]+/i);
只有小写字母和重音没有i
选项:
text.match(/[a-z\u00E0-\u00FC]+/);
但正确的正则表达式是什么才能匹配仅大写的字母和重音?
编辑:就像下面已经提到的答案一样,上面的正则表达式也匹配其他一些标志,并且会错过一些特殊的重音字符,比如ý和Ý,ć和Ć等等。
答案 0 :(得分:8)
范围U+00C0
- U+00DC
应该是U+00E0
- U+00FC
所以这个text.match(/[A-Z\u00C0-\u00DC]+/);
应该是你想要的。
像graphemica这样的网站可以帮助您确定自己需要的范围。
与已经提及的其他答案一样,编辑,这也符合其他一些迹象。
答案 1 :(得分:4)
将a-z
替换为A-Z
,将\u00E0-\u00FC
替换为\u00C0-\u00DC
,将匹配相同的字母以大写形式匹配text.match(/[a-z\u00E0-\u00FC]+/);
匹配为小写
<强>然而强>!
对于小写字母和大写字母,这不是正确的实现,例如,您的小写匹配包括÷
(分号),它根本不是字母,而我的大写字符串将匹配{{ 1}}(乘号),看起来像一个X,但实际上也不是一个字母。
除此之外,您还缺少×
和ý
,Ý
和ć
以及许多其他字符等字符。
答案 2 :(得分:3)
你的第一个正则表达式实际上并不匹配字母和重音符号:它只匹配字母和重音字母的特定子集,即unicode代码点\u00E0
和\u00FC
之间的字母和重音符号。该范围不包括任何大写字母,但它包括例如÷标志和一些通常不被视为“重音”的字母。
根据您的实际需要,这可能不是您想要的。如果您真的想要将所有大写字母和所有大写字母与相同的重音相匹配,则需要正则表达式/[A-Z\u00C0-\u00DC]+/
,但请查看例如http://unicode-table.com/en/#basic-latin检查它是否符合您的需求。
答案 3 :(得分:0)