Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式无效:无需重复错误_Javascript_Regex_Unicode_Counter - Fatal编程技术网

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

Javascript 正则表达式无效:无需重复错误,javascript,regex,unicode,counter,Javascript,Regex,Unicode,Counter,我正在尝试制作一个应用程序,计算给定字符串中每个字符出现的次数。例如,在字符串“hello 12355”中,它应该与1之后的所有数字匹配,而不是与“hello”部分匹配。但是,当我尝试运行代码时,我在控制台中得到以下信息: “未捕获的语法错误:无效的正则表达式:/?/:无需重复 在新的RegExp()中“ 但是,当我将xy更改为92以上的值时,代码运行良好。从我所读到的关于这个错误的内容来看,这意味着必须将某些字符的反斜杠加倍,因为它们在Regexp中有某种含义。但是,我不能在不影响所有Unic

我正在尝试制作一个应用程序,计算给定字符串中每个字符出现的次数。例如,在字符串“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);
var occArray=[];
var occChars=[];
var xy=50;
对于(i=xy;i<100;i++){
var unicodeChar=String.fromCharCode(i);
var计数器=新的RegExp(unicodeChar,'g');
var occurrence=“你好12355”;
var occ=(发生率.匹配(计数器)| |[])长度;
occArray.push(occ);
occChars.push(unicodeChar);
}
警报(occArray);
警报(occChars);

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


希望这能对您有所帮助。

可能重复的是,正是问号和双括号造成了问题。我使用if语句跳过那些特定的Unicode值,现在它可以工作了。非常感谢。