我需要用它的非重音版本替换字符串中的所有重音字符,以便排序。 我找到了如何匹配重音符号的方法,但是是否可以使用正则表达式来替换每个符号? 我的意思是:
var re = /ùÙüÜäàáëèéïìíöòóüùúÄÀÁËÈÉÏÌÍÖÒÓÜÚñÑ/g;
var str = "ùÙüÜäàáëèéïìíöòóüùúÄÀÁËÈÉÏÌÍÖÒÓÜÚñÑ";
var newstr = str.replace(re, 'M');
console.log(newstr);
这会打印“M” 但我需要:'uUuUaaaeeeeiiooouuuAAAEEEIIIOOOUUnN'
这可能吗? 谢谢
最佳答案
你需要使用字符类。
var re = /[ùÙüÜäàáëèéïìíöòóüùúÄÀÁËÈÉÏÌÍÖÒÓÜÚñÑ]/g;
然后,您可以将函数作为第二个参数传递给 replace
函数。该函数应包含转换逻辑。一种简单的方法是使用转换映射。
例如
var re = /[ùÙüÜäàáëèéïìíöòóüùúÄÀÁËÈÉÏÌÍÖÒÓÜÚñÑ]/g;
//incomplete but you get the idea
var conversionMap = {
'ù': 'u',
'Ù': 'U',
'ü': 'u',
'Ü': 'U',
'ä': 'a'
};
"ùÙüÜäàáëèéïìíöòóüùúÄÀÁËÈÉÏÌÍÖÒÓÜÚñÑ".replace(re, function (c) {
return conversionMap[c] || c;
}); //uUuUaàáëèéïìíöòóuuúÄÀÁËÈÉÏÌÍÖÒÓUÚñÑ
关于javascript - 是否可以在 js 中使用正则表达式来替换几个不同的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19237044/