JavaScript正则表达式用于带重音的大写字母

时间:2015-04-19 14:10:01

标签: javascript regex

在JavaScript中,这个正则表达式很容易匹配字母和重音

text.match(/[a-z\u00E0-\u00FC]+/i);

只有小写字母和重音没有i选项:

text.match(/[a-z\u00E0-\u00FC]+/);

但正确的正则表达式是什么才能匹配仅大写的字母和重音

编辑:就像下面已经提到的答案一样,上面的正则表达式也匹配其他一些标志,并且会错过一些特殊的重音字符,比如ý和Ý,ć和Ć等等。

4 个答案:

答案 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)

要匹配所有带重音或不带重音的大写字母,可以使用以下unicode正则表达式/\p{Lu}+/u。例如,在节点repl中:

enter image description here

请注意,这也将匹配非拉丁字母,例如示例中的大写希腊字母Δ。