ope*_*sas 6 javascript regex locale
我想通过一个例子来解释更容易:
'gracias senor'.match(/\w+/g)
["gracias", "senor"]
但如果我使用任何非英语字符:
'gracias señor'.match(/\w+/g)
["gracias", "se", "or"]
有没有办法考虑ñ,áé等字符.
根据维基百科,西班牙语字母包括:
A-Z,a-zñ和Ñá, é, í, ó, ú, ü(及其对应的大写字符)由于有两种方法可以指定带有变音符号的字符:
áa?("a\u0341")您至少需要处理此类情况。值得庆幸的是,西班牙语的字符上最多只有 1 个变音标记。
在 Unicode 中,也有分解为英文字母A-Z或a-z. 由于 JavaScript 的 RegExp 对 Unicode 的支持很差,而且它们很少使用,所以我忽略了这些情况。
因此,要正确匹配西班牙字母表(单个字形和组合标记):
[aeiouAEIOU]\u0341|[uU]\u0308|[nN]\u0303|[a-zA-ZáéíóúüÁÉÍÓÚÜñÑ]
(请注意,i标志对非 US-ASCII 字符无效)。
回到匹配单词的问题。这取决于您对“单词字符”的定义。
假设一个“单词”(西班牙语)由西班牙语字母和数字组成0-9:
(?:[aeiouAEIOU]\u0341|[uU]\u0308|[nN]\u0303|[a-zA-ZáéíóúüÁÉÍÓÚÜñÑ0-9])+
测试代码:
'gracias señor sen?or'.match(/(?:[aeiouAEIOU]\u0341|[uU]\u0308|[nN]\u0303|[a-zA-ZáéíóúüÁÉÍÓÚÜñÑ0-9])+/g).forEach(function(v){console.log(v + " " + v.length)});
输出(匹配字和长度):
gracias 7
señor 5
sen?or 6
| 归档时间: | 
 | 
| 查看次数: | 2570 次 | 
| 最近记录: |