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

Javascript regexp error (Invalid regular expression: /?/: Nothing to repeat)

我正在做的(如果相关的话)是一个函数,用于分离彼此不同的 unicode 字符(例如,数字和字母)。 正如您从标题中看到的那样,它给我一个错误 Uncaught SyntaxError: Invalid regular expression: /?/: Nothing to repeat

我绝对不是正则表达式方面的专家。我还没有开始研究它,我已经搜索了 stack over flow,但我不明白任何答案,所以如果你能为我保持简单,我将不胜感激,对于给你带来的不便,我们深表歉意。

link 在这里: http://jsfiddle.net/ueb2bu9o/5/

useReg = new RegExp(getFirstSplit[i]);

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

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

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

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

要按字面搜索 ?,您必须在其前面加上一个反斜杠,如 '\\?'

如果我明白你要做什么,你只是想逐个字符地遍历整个字符串,然后将它们分类为字母、数字或垃圾类别,对吗?

如果是这种情况,您甚至根本不必拆分字符串 — .match() will simply generate an array of matches from your string based on the regular expression you provide it, and you can manipulate the resulting array in any way you want. In this case, you want to join them into a string, using .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);
}

请参阅此处 fiddle:http://jsfiddle.net/teddyrised/ueb2bu9o/8/