2015-04-06 204 views
1

我在做什么(如果相关的话)是一种用于区分彼此不同的unicode字符(例如数字和字母)的函数。 正如您可以从标题看,它给了我未捕获的SyntaxError的错误:无效的正则表达式:/ /?:没有重复Javascript正则表达式错误(无效的正则表达式:/?/:无法重复)

我绝对正则表达式方面的专家。我还没有到处学习它,而且我已经搜索了超过流程的堆栈,但我不明白任何答案,所以如果您要保持简单对我来说非常感谢,对于这种不便,我感到抱歉。

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

useReg = new RegExp(getFirstSplit[i]); 

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

如果您需要任何更多的信息,只是问,我会更新这个帖子

+0

字符的意思是“前一个字符是可选的。“所以每次遇到'?'在你的字符串中,并执行'RegExp('?')'它会失败。为什么使用正则表达式? – lxe

+0

@lxe,查看所使用的字符是否在字母变量中,如果不是,它会确定它是垃圾 – CoderJS

+0

你能解释一下你想要用你的代码做什么吗? – Terry

回答

0

如果我得到你想要做什么,你只是试图去通过整个字符串,逐个字符地分类,并将它们分类为字母,数字或垃圾,对吗?

如果是这样的话,甚至不需要分割字符串 - .match()将根据您提供的正则表达式从您的字符串中简单生成匹配数组,并且您可以操作生成的数组以任何你想要的方式。在这种情况下,您想使用.join()将它们连接成一个字符串。

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

  • /[a-z]/gi,经过9
  • 到Z
  • /[0-9]/gi意味着比赛从A所有字母,意为比赛从0全数字的字符/[^a-z0-9]/gi,表示与AZ或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/

+0

是的,这正是我需要的。谢谢你的时间:)我一定要记住更经常地使用.match。 – CoderJS

0

有喜欢一些字符? \/ ...以及其他您无法直接使用的应用程序,则应使用反斜杠\将其转义。阅读更多关于它here。 你看错误是因为是这些特殊字符之一。

0

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

要搜索字面?,你必须把一个反斜杠在它的前面作为'\\\\?'