2015-04-06 165 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次。

要搜索字面?,你必須把一個反斜槓在它的前面作爲'\\\\?'