javascript - 是否可以在 js 中使用正则表达式来替换几个不同的字符?

标签 javascript regex

我需要用它的非重音版本替换字符串中的所有重音字符,以便排序。 我找到了如何匹配重音符号的方法,但是是否可以使用正则表达式来替换每个符号? 我的意思是:

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ÚñÑ

FIDDLE

关于javascript - 是否可以在 js 中使用正则表达式来替换几个不同的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19237044/

相关文章:

javascript - jQuery 的 .data() 函数在 Kendo UI 中的作用是什么?

javascript - 追加后点击无法正常工作

javascript - 在javascript中解析

php - 如何匹配出现在特定子字符串之后的多个子字符串?

c++ - 如何对大型文本文件运行字典搜索?

javascript - 无法将项目添加到 JS map

javascript - 修复 React 中的文件夹结构错误

javascript - 更改 Javascript 中的文本

java - 如何使用 java 正则表达式检测一个字符串是否包含多个字符之一

c# - 使用逗号分隔列表的最简单方法