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

08-06 09:54