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

Javascript regexp错误(无效的正则表达式:/?/:无需重复),javascript,regex,jsfiddle,Javascript,Regex,Jsfiddle,我正在做的(如果相关的话)是一个分离相互不同的unicode字符(例如数字和字母)的函数。 正如您从标题中看到的,它给了我一个错误未捕获的语法错误:无效的正则表达式:/?/:无需重复 我绝对不是正则表达式方面的专家。我还没来得及去研究它,我已经搜索了一堆又一堆,但我不明白任何答案,所以如果你能为我保持简单,我将不胜感激,为那次冲突感到抱歉 链接如下: 上面是电脑所说的问题所在的代码,但这可能是错误的。另外,对于我的这个小项目,我正在使用谷歌浏览器和jsfiddle.net 如果您需要更多信息,

我正在做的(如果相关的话)是一个分离相互不同的unicode字符(例如数字和字母)的函数。 正如您从标题中看到的,它给了我一个错误未捕获的语法错误:无效的正则表达式:/?/:无需重复

我绝对不是正则表达式方面的专家。我还没来得及去研究它,我已经搜索了一堆又一堆,但我不明白任何答案,所以如果你能为我保持简单,我将不胜感激,为那次冲突感到抱歉

链接如下:

上面是电脑所说的问题所在的代码,但这可能是错误的。另外,对于我的这个小项目,我正在使用谷歌浏览器和jsfiddle.net


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

有一些字符,如?\/。。。对于不能直接使用的其他内容,应使用反斜杠\将其转义。阅读更多关于它的信息。
您看到的错误是因为是这些特殊字符之一。

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


要按字面搜索?,你必须在它前面加一个反斜杠,就像
“\\\\?”

如果我知道你想做什么,你只需要一个字符一个字符地遍历整个字符串,然后将它们按字母、数字或垃圾分类,对吗

如果是这样的话,您甚至不必拆分字符串——只需根据您提供的正则表达式从字符串生成匹配数组,您就可以以任何方式操纵生成的数组。在本例中,您希望使用将它们连接到一个字符串中

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

  • /[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:

“?”字符表示“上一个字符是可选的”。因此,每当您在字符串中遇到“?”并执行
RegExp(“?”)
时,它都会失败。为什么要使用正则表达式?@lxe,以查看所使用的字符是否在字母表变量中,如果不是,它将确定它是垃圾。您能否准确地解释您试图用代码执行的操作?如果您阅读第一段,它将解释我试图执行的操作。。。但如果你愿意的话,我会尽量详细解释。我试图将数字与任何其他字符分开。以及来自诸如!@#$等字符的字母。我会将这些信息用于一个网站,然后我会将其倍增和其他事情。这只是为了编码练习,就像在练习解码一样。是的,这正是我需要的。非常感谢您的时间:)。我一定要记得使用。更频繁地匹配。
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);
}