2011-07-21 46 views
1

我想創建一個正則表達式,它指向我的字符串中不是0-9(數字)或-(短劃線)的任何字符。我的下面的正則表達式有什麼問題?僅過濾出0-9和破折號?

正則表達式:

regex = '/^[0-9-]/g'; 

JS實現:

$(this).val($(this).val().replace(regex, '')); 
+4

正則表達式不是字符串。 –

+0

意識到這一點,只顯示我的正則表達式實現 – Industrial

+1

如果你「知道這一點」,那麼爲什麼你的正則表達式是一個字符串? –

回答

4

我想你的意思是你^字符類。另外,regexes are not strings

regex = /[^0-9-]/g; 
$(this).val($(this).val().replace(regex, '')); 
0

你需要把 '^' 括號內和逃生 ' - ',它是一個特殊字符。您正則表達式應該是

regex = /[^0-9\-]/g 
+2

你不需要轉義'-'。 –

+0

不,在字符類的開始或結尾,'-'不需要被轉義。你甚至不需要在範圍後面('[a-c-A-C]')或者直接在一個簡短的字符類('[\ d- \ w]')之後直接轉義它。 –

+2

@Tomalak,你的評論,它不需要逃脫可能會被解釋不同於你的意思。你的意思是它不需要在_this_的情況下被轉義,而你的評論可以被解釋爲它永遠不需要在類內轉義,這是不正確的(我知道_你知道這個......)。 –