不敏感事件计数器-JS

时间:2018-09-02 15:11:29

标签: javascript counter

我有一个正在发生的计数器,它正在字符串中寻找子字符串,但是区分大小写。 我的实际代码是:

count = (string.match(new RegExp(substring, 'gm')) || []).length;

例如,如果该字符串一次包含子字符串但带有更重的重音,则计数将等于'0'。

请问有没有办法创建一个不区分大小写的计数器?

1 个答案:

答案 0 :(得分:0)

您可以使用toLowerCase()或使用标志i将两个字符串都转换为小写(但请注意this)。对于重音符号,很遗憾,您必须将其单独替换为基本字符串:

var string = "AÁáéíóú";

var substring = "AAaeiou";

var r = new RegExp("")

string = string.replace(/Á|É|Í|Ó|Ú/gi, function(m){
    if(m=="á") return "a"
    if(m=="é") return "e"
    if(m=="í") return "i"
    if(m=="ó") return "o"
    if(m=="ú") return "u"

    if(m=="Á") return "a"
    if(m=="É") return "e"
    if(m=="Í") return "i"
    if(m=="Ó") return "o"
    if(m=="Ú") return "u"
})

var count = (string.match(new RegExp(substring, 'gmi')) || []).length;

console.log(count)

如果您还具有ñ,则必须单独进行更改。

您也可以使用.normalize(),但在IE中不起作用

var string = "AÁáéíóú";

var substring = "AAaeiou";

var r = new RegExp("")

string = string.normalize('NFD').replace(/[\u0300-\u036f]/gi, "")

var count = (string.match(new RegExp(substring, 'gmi')) || []).length;

console.log(count)