繁体   English   中英

无效的正则表达式:无重复错误

[英]Invalid Regular Expression: Nothing to Repeat Error

我正在尝试制作一个计算每个字符在给定字符串中出现多少次的应用程序。 因此,例如,在字符串“ hello 12355”中,它应与所有1以上的数字匹配,而不是与“ hello”部分匹配。 但是,当我尝试运行代码时,会在控制台中得到此代码:

“未捕获的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);

我认为这是因为您为unicodeChar传递的某些字符是Regex中的特殊字符(在您的错误中,它是? ,它是63)。 请考虑检测它是否是特殊字符,如果是特殊字符,则可以在将其传递给Regex之前在其前面添加反斜杠。

可能对您有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM