计算Regexp中保留字符的出现次数(Javascript)

时间:2017-04-07 23:24:16

标签: javascript regex unicode reserved-words

我正在尝试计算给定字符串中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中的所有其他保留字符(括号,括号,胡萝卜等)。

非常感谢任何帮助。

2 个答案:

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