2014-01-08 54 views
0

我正在使用RegExp來製作slu。。我要說的全部替換字符不符合這樣的模式:Javascript替換正則表達式

str = str.replace(new RegExp('[^a-z0-9-]','g'), ''); 

它的工作原理,但我要問,如果這是正確的方法/語法/方法?

感謝您的任何提示。

+0

你可以這樣做,或'str = str.replace(/ [^ a-z0-9 - ]/g),'');' – brandonscript

+0

最後一個連字符也是錯誤的 - ''* &%^ $ - kjhkhkjh'.replace(/ [^ a-z0-9]/g,'');' – epoch

+1

@epoch其中最後一個問題是錯誤的? – YahyaE

回答

3

1)你可以寫

new RegExp('[^a-z0-9-]','g') 

/[^a-z0-9-]/g 

正則表達式,你寫了代表以下:

2)無論是內部[]指的字符不是一個序列,而是當[^]環繞法是本開頭這意味着NOT IN

3)a-z代表所有字符從A到Z(小寫字母)

4)0-9指0到9和連字符( - )在最後......連字符。

因此,你想保留哪些字符?如果你想保持唯一的字母數字,然後使用/[^A-Za-z0-9]/g(這是區分大小寫的版本)不區分大小寫

修飾符/標誌或/[^a-z0-9]/gig =全球,i =不區分大小寫

的好地方看看:Mozilla MDN RegExp

+0

雖然這基本上是一個很好的答案,但您可能需要考慮更好的格式,例如使用更多的代碼塊(以及其他方法),以提高可讀性,從而使其成爲更好的答案。 :-) –

+1

@BastiM感謝您的建議。希望這種格式有所幫助。說實話,我還沒有探索格式化選項,我不知道可以做什麼或不能做什麼,除了添加新的代碼四個字符縮進一個新的行。 –

+1

現在看起來好多了:)隨着時間的推移,你會探索所有這些格式化的東西,你會習慣它們。 –