在JavaScript中制作不区分重音的RegExp

时间:2019-01-30 00:42:37

标签: javascript

我对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

这样的东西存在吗?

1 个答案:

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