我正在尝试计算给定字符串中Regexp中正常保留字符的出现次数。例如,星号(*)是Regexp中的保留字符。所以,虽然我可以这样做:
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);
我尝试使用unicode等效的星号(\ u002A),使用Regexp构造函数转义星号,并将星号放在数组中,但它看起来似乎匹配。当我将它直接放在变量occ:
中时,它总是会出现这个错误Uncaught SyntaxError: Unexpected token *
这也适用于regexp中的所有其他保留字符(括号,括号,胡萝卜等)。
非常感谢任何帮助。
答案 0 :(得分:2)
您应该使用反斜杠(\
)来转义星号。
这是一个例子:
str = 'alskjdfalk*sdjf alksdjf* aljsdf01830*912838123*'
var occ = (str.match(/\*/g) || []).length;
console.log(occ);

答案 1 :(得分:1)
@ Dekel的答案是使用正则表达式搜索保留字符的正确方法。您也可以避免正则表达式并拆分保留字符并取length
减去1:
var str = 'alskjdfalk*sdjf alksdjf* aljsdf01830*912838123*'
var count = str.split('*').length - 1;
console.log(count);