我有一个正在发生的计数器,它正在字符串中寻找子字符串,但是区分大小写。 我的实际代码是:
count = (string.match(new RegExp(substring, 'gm')) || []).length;
例如,如果该字符串一次包含子字符串但带有更重的重音,则计数将等于'0'。
请问有没有办法创建一个不区分大小写的计数器?
答案 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)