计算正则表达式(javascript)中保留字符的出现次数



我正在尝试计算给定字符串中正则表达式中通常保留字符的出现次数。例如,星号 (*( 是正则表达式中的保留字符。所以,虽然我可以这样做:

var textareaId = document.getElementById("textareaId").value;
var occ = (textareaId.match(/i/g) || []).length;
alert(occ);

我不能这样做:

var textareaId = document.getElementById("textareaId").value;
var occ = (textareaId.match(/*/g) || []).length;
alert(occ);

我尝试使用相当于星号(\u002A(的Unicode,转义星号,使用正则表达式构造函数,并将星号放在数组中,但它似乎不匹配。当我直接将其放入变量occ中时,它总是给出此错误:

Uncaught SyntaxError: Unexpected token *

这也适用于正则表达式中的所有其他保留字符(括号、括号、胡萝卜等(。

任何帮助将不胜感激。

你应该用反斜杠((转义星号。

这是一个考试:

str = 'alskjdfalk*sdjf alksdjf* aljsdf01830*912838123*'
var occ = (str.match(/*/g) || []).length;
console.log(occ);

@Dekel的答案是使用正则表达式搜索保留字符的正确方法。您也可以避免正则表达式并在保留字符上拆分,并取length减 1:

var str = 'alskjdfalk*sdjf alksdjf* aljsdf01830*912838123*'
var count = str.split('*').length - 1;
console.log(count);

最新更新