我正在尝试创建一个应用程序来计算每个字符在给定字符串中出现的次数。例如,在字符串" hello 12355"它应该匹配过去1的所有数字,而不是"你好"部分。但是,当我尝试运行代码时,我在控制台中得到了这个:
" Uncaught SyntaxError:无效的正则表达式:/?/:无需重复 在新的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);
答案 0 :(得分:4)
我认为这是因为您为unicodeChar
传递的某个字符在Regex中是特殊字符(在您的错误中,它是?
,即63)。请考虑检测它是否是特殊字符,如果是,则可以在将其传递给Regex之前在其前面添加反斜杠。
这可以帮助你。