我对JavaScript中的RegExp有点担心。我想制作一个对重音不敏感的RegExp。
例如,如果我这样做:
var str = 'césar';
var i = New Regexp (str, 'desired parameter, similar to <i> for example').exec('cesar');
console.log(i) // césar or cesar should print
这样的东西存在吗?
答案 0 :(得分:0)
没有可传递的RegExp参数来更改重音的处理方式。您需要做的是建立一个字符矩阵,这些字符应该相互替代,然后从这些替代字符构建一个RegExp模式。
const e = ['È', 'É', 'Ê', 'Ë', 'è', 'é', 'ê', 'ë'],
a = ['à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ']
const substitutions = {
e, E: e, a, A: a
}
var str = 'Cesar';
const pattern = Array.from(str).map(c => substitutions[c] ? `[${c}${substitutions[c].join("")}]`: c).join("")
console.log(pattern)
var i = new RegExp(pattern, "gi").exec('césar');
console.log(i)