Javascript regexp错误(无效的正则表达式:/?/:没有重复)

时间:2015-04-06 17:53:20

标签: javascript regex jsfiddle

我制作的内容(如果相关)是用于分隔彼此不同的unicode字符的函数(例如,字母中的数字)。 正如您从标题中看到的那样,它给出了一个错误未捕获的SyntaxError:无效的正则表达式:/?/:无需重复

我绝对不是正则表达式的专家。我还没有去研究它,而且我已经搜索过堆栈,但是我没有理解任何答案,所以如果你对我保持简单,那将非常感谢,抱歉因为那种不便。

链接在这里: http://jsfiddle.net/ueb2bu9o/5/

useReg = new RegExp(getFirstSplit[i]);

以上是计算机说明问题所在的代码,但这可能不正确。此外,对于我的这个小项目,我使用谷歌Chrome和jsfiddle.net

如果您需要更多信息,请询问,我将更新此帖

3 个答案:

答案 0 :(得分:0)

有一些字符如? \ / ...和其他你不能直接使用的,你应该使用反斜杠 \ 来逃避它们。阅读更多相关信息here。 你看错误是因为是这些特殊字符之一。

答案 1 :(得分:0)

?是正则表达式中的特殊字符。这意味着它之前的字符重复0或1次。

要按字面搜索?,你必须在'\\\\?'

之前在其前面加一个反斜杠

答案 2 :(得分:0)

如果我得到了你想要做的事情,那么你只是试图逐字逐句地查看整个字符串,然后将它们分类为字母,数字或垃圾,对吗? / p>

如果是这种情况,你根本不需要拆分字符串 - .match()只会根据你提供的正则表达式从你的字符串生成一系列匹配项,而你可以以任何你想要的方式操纵结果数组。在这种情况下,您希望使用.join()将它们连接成一个字符串。

您要为每个类别使用的正则表达式为:

  • /[a-z]/gi,意思是匹配A到Z的所有字母
  • /[0-9]/gi,意思是匹配0到9之间的所有数字字符
  • /[^a-z0-9]/gi,表示与A-Z或0-9字符集不匹配的字符,即前两个字符集中未选中的字符。

这是JS代码:

function manipulateString(string) {
    var letter,
        numbers,
        junk;

    letter = string.match(/[a-z]/gi).join('');
    numbers = string.match(/[0-0]/gi).join('');
    junk = string.match(/[^a-z0-9]/gi).join('');

    console.log(letter);
    console.log(numbers);
    console.log(junk);
}

请参阅此处的小提琴:http://jsfiddle.net/teddyrised/ueb2bu9o/8/