【问题标题】:Invalid Regular Expression: Nothing to Repeat Error无效的正则表达式:没有重复的错误
【发布时间】:2017-08-27 12:55:53
【问题描述】:

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

“未捕获的 SyntaxError: 无效的正则表达式: /?/: 没有可重复的 在新的正则表达式 ()"

但是,当我将 xy 更改为超过 92 的任何值时,代码运行良好。根据我所读到的有关此错误的信息,这意味着您必须对某些字符加双反斜杠,因为它们在正则表达式中意味着某些东西。但是,我不能在不影响所有 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);

【问题讨论】:

标签: javascript regex unicode counter


【解决方案1】:

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

希望对您有所帮助。

【讨论】:

  • 是的,它恰好是导致问题的问号和双括号。我使用 if 语句跳过那些特定的 Unicode 值,现在它可以工作了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-15
  • 2011-04-10
  • 1970-01-01
  • 2013-12-02
  • 1970-01-01
相关资源
最近更新 更多