我正在尝试制作一个应用程序来计算每个字符在给定字符串中出现的次数。因此,例如,在字符串“hello 12355”中,它应该与 1 之后的所有数字匹配,而不是与“hello”部分匹配。但是,当我尝试运行代码时,我在控制台中得到了这个:
“未捕获的语法错误:无效的正则表达式:/?/:无须重复 在新的 RegExp ()"
然而,当我将 xy 更改为任何大于 92 的值时,代码运行正常。从我读到的有关此错误的内容来看,这意味着您必须对某些字符加双反斜杠,因为它们在 Regexp 中具有某种含义。但是,我不能在不影响所有 Unicode 值的情况下对 Unicode 变量加倍反斜杠。谁能帮忙?
这是我的代码:
var occArray = [];
var occChars = [];
var xy = 50;
for (i = xy; i < 100; i++) {
var unicodeChar = String.fromCharCode(i);
var counter = new RegExp(unicodeChar, 'g');
var occurence = "hello 12355";
var occ = (occurence.match(counter) || []).length;
occArray.push(occ);
occChars.push(unicodeChar);
}
alert(occArray);
alert(occChars);
最佳答案
我认为这是因为您为 unicodeChar
传递的某些字符是 Regex 中的特殊字符(在您的错误中,它是 ?
是 63)。请考虑检测它是否是特殊字符,如果是,您可以在将其传递给 Regex 之前在其前面添加反斜杠。
希望这对你有帮助。
关于javascript - 无效的正则表达式 : Nothing to Repeat Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43171401/