我試圖創建一個正則表達式匹配的字母數字字符和下劃線_
。這是我的正則表達式:"\w_*[^-$\s\]"
,我的感覺是,這個正則表達式是指任何字母數字字符\w
,下劃線_
,並沒有-
,$
,或空白。它是否正確?正則表達式包含字母,數字和_
1
A
回答
4
正則表達式理解爲這實際上在字符串中的字符匹配的模式,從左到右,所以你的模式實際上是相匹配的字母,那麼下劃線(0或以上) ,那麼至少有一個字符不是連字符,美元或空格。
既然你想上的字符類型交替,只使用一個字符類,以顯示你允許哪些字符:
[\w_]
這就驗證字符串的任何部分匹配它,讓我們錨它開始和到字符串:
^[\w_]$
現在我們看到這個字符類缺少一個量詞,所以我們完全匹配上一個字符。我們可以修復使用+
(如果你想要一個或多個字符,沒有空字符串)或*
(如果你想允許空字符串)。我會在這裏使用+
。
^[\w_]+$
事實證明,在\w
字符類已經包含了下劃線,所以我們可以從模式中刪除多餘的下劃線:
^[\w]+$
現在我們必須在字符類只有一個字符,所以我們不再需要的字符類括號都:
^\w+$
這就是你所需要的,除非我失去了一些關於你的要求。
+0
這個回答假設我們要驗證*整個字符串*正則表達式。如果要檢查字符串中是否存在至少一個字母數字/下劃線,請使用@ hwnd的答案(http://stackoverflow.com/a/26442555/129655)。 – 2014-10-18 17:30:13
2
是,如果右括號沒有轉義並且您編輯了正則表達式,則您是半正確的。此外,令牌\w
匹配下劃線,因此您不需要重複此字符。正則表達式說:
\w # word characters (a-z, A-Z, 0-9, _)
_* # '_' (0 or more times)
[^-$\s] # any character except: '-', '$', whitespace (\n, \r, \t, \f, and " ")
你可以簡單地寫你的整個正則表達式如下匹配單詞字符:
\w+ # word characters (a-z, A-Z, 0-9, _) (1 or more times)
如果你想匹配整個字符串,一定要錨你的表達。
^\w+$
說明:
^ # the beginning of the string
\w+ # word characters (a-z, A-Z, 0-9, _) (1 or more times)
$ # before an optional \n, and the end of the string
相關問題
- 1. 正則表達式匹配只包含字母和數字的字母數字
- 2. 驗證正則表達式必須包含字母數字
- 3. Java字符串包含的正則表達式包含字母和:/
- 4. 包含字母數字和特殊字符的正則表達式
- 5. JavaScript正則表達式包含字母數字和特殊字符
- 6. 在正則表達式搜索中包含無字母字符
- 7. 正則表達式的字符串只包含小寫字母
- 8. 正則表達式的字母數字
- 9. 正則表達式不字母數字
- 10. 字母數字的正則表達式
- 11. 正則表達式字母數字jquery
- 12. 正則表達式匹配一個字母字母和數字
- 13. 正則表達式,包含字母,數字和一些標點符號
- 14. PHP的正則表達式來找到包含字母和數字的單詞
- 15. 正則表達式必須包含至少一個數字和字母嗎?
- 16. 使用正則表達式匹配包含數字字母和破折號
- 17. 正則表達式只能包含數字和「 - 」字符
- 18. 正則表達式:允許使用字母,數字和空格(至少包含一個字母而非數字)
- 19. 正則表達式:匹配的字母數字字符串可能包含characther ' - '
- 20. 正則表達式匹配包含非字母數字字符的單詞
- 21. 正則表達式字符串包含
- 22. 包含和不包含字符的正則表達式
- 23. 正則表達式字母數字字符串+特殊字母
- 24. 正則表達式匹配包含字母串,只強調
- 25. 正則表達式:匹配只包含一個字母串
- 26. 正則表達式:如果三個字母都包含
- 27. 正則表達式匹配包含某些字母的單詞
- 28. HTACCESS - 正則表達式/包含大寫字母?
- 29. 正則表達式,包括所有的字母,數字和特殊字符,*和&
- 30. 正則表達式 - 小寫字母數字和正斜槓
'\ w'還涵蓋了'_'符號。 – 2014-10-18 17:24:27
是的,你不應該逃避']' – thefourtheye 2014-10-18 17:24:54