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

Count Occurrences of Reserved Characters in Regexp (Javascript)

我正在尝试计算给定字符串中 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);

我尝试使用星号 (\u002A) 的 unicode 等价物、转义星号、使用 Regexp 构造函数并将星号放入数组中,但它似乎不匹配。当我直接把它放在变量 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);