我正在創建一個JavaScript函數,它將接收用戶輸入的值並從中創建一個CSS類名稱。下面的表達式可以用來檢測最終結果是否符合有效的CSS規則正則表達式 - 從與表達式不匹配的字符串中移除所有內容
-?[_a-zA-Z]+[_a-zA-Z0-9-]*
,但我需要找到一種方法,用它來刪除所有無效字符。
我想的是一樣的東西:
var newClass = userInput.replace(EVERYTHING BUT /[_a-zA-Z0-9-]/, "");
我正在創建一個JavaScript函數,它將接收用戶輸入的值並從中創建一個CSS類名稱。下面的表達式可以用來檢測最終結果是否符合有效的CSS規則正則表達式 - 從與表達式不匹配的字符串中移除所有內容
-?[_a-zA-Z]+[_a-zA-Z0-9-]*
,但我需要找到一種方法,用它來刪除所有無效字符。
我想的是一樣的東西:
var newClass = userInput.replace(EVERYTHING BUT /[_a-zA-Z0-9-]/, "");
一個非常小的修改現有的正則表達式應該工作,使用^
運營商和g
:
/[^a-zA-Z0-9_-]+/g
哪些應作爲:
var newClass = userInput.replace(/[^a-zA-Z0-9-_]/g, '');
該^
字符作爲括號內的第一個字符[]
,指定與括號內的而不是相匹配(即, - 你想去除的角色)。
g
修飾符對整個輸入字符串執行全局匹配。
我注意到你改變了表達式中字符的順序。任何原因或只是偏好。它確實有助於您的可讀性。 – MindWire 2012-08-03 20:15:07
@MindWire只有我自己的個人喜好;我喜歡先保留字母數字字符和符號最後(也是如何在網上找到大多數正則表達式的例子)。是的,我認爲它也有助於提高可讀性! – newfurniturey 2012-08-03 21:30:02
var newClass = userInput.replace(/\W/, "");
\ W等於[A-ZA-Z0-9_]
\ W等於[^ A-ZA-Z0-9_]
缺少作爲可替換字符的短劃線,但在解釋\ w \ W功能方面表現不俗。 – MindWire 2012-08-03 20:18:13
謝謝,我無法更好地解釋它,因爲這是我的同事回答我的方式。我看到了這個問題,並問那位知道我能幫助OP的人。 – 2012-08-03 20:48:46
@burning_LEGION,由於爲禮儀編輯。將記住未來的職位。愛上stackoverflow的社區! – MindWire 2012-08-03 20:16:17