计算正则表达式中保留字符的出现次数 (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);
我正在尝试计算给定字符串中 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);