Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Invalid Regular Expression: Nothing to Repeat Error

I am trying to make an app that counts how many times each character occurs in a given string. So for example, in the string "hello 12355" it should match with all the numbers past 1, and not with the "hello" part. However, when I try to run the code, I get this in the console:

"Uncaught SyntaxError: Invalid regular expression: /?/: Nothing to repeat at new RegExp ()"

When I change xy to anything past 92, however, the code runs fine. From what I've read about this error, it means that you have to double backslash some characters because they mean something in Regexp. However, I can't double backslash the Unicode variable without affecting all of the Unicode values. Can anyone help?

Here is my code:

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);
like image 613
Mister_Maybe Avatar asked Jan 04 '23 06:01

Mister_Maybe


1 Answers

I think it happens because some character you pass for unicodeChar is special character in Regex(In your error, it's ? which is 63). Please consider to detect whether it's special character or not, if it is, you can add backslash infront of it before you pass it to Regex.

May this helps you.

like image 152
Muhammad Reza Irvanda Avatar answered Jan 07 '23 10:01

Muhammad Reza Irvanda