2013-03-04 58 views
2

我試圖編寫正則表達式來匹配字符串,除了帶有下劃線的字符串。使用正則表達式匹配除下劃線以外的任何字符

我有這個到目前爲止/[A-Za-z0-9]+/但我不知道要包含什麼,以使它不需要下劃線。

UPDATE:

是應該使這更清楚了蝙蝠。 我試圖匹配一個電子郵件地址,但不是電子郵件地址的下面部分中有一個下劃線,這是我迄今總共有的。 /[A-Za-z_0-9][email protected][A-Za-z0-9]+\.(com|ca|org|net)/ 的答案作爲然而,沒有工作

+2

'^ [^ _] + $'。這意味着沒有下劃線的任何字符串。例如,這個評論或你的整個問題。那是你要的嗎? – FakeRainBrigand 2013-03-04 16:12:14

回答

2

如果我明白你在問什麼 - 匹配字符串,除了包含下劃線的字符串以外 - 這需要正則表達式lookahead。

原因是正則表達式一次只能操作一個字符。所以如果我想知道我是否應該匹配一個角色,但是隻有當後面沒有下劃線時,我才需要使用前視。

^((?!_)[A-Za-z0-9])+$

?!是負先行操作

編輯:

所以,你希望這是在@符號之前的部分最多隻有一個下劃線,並在部分之後沒有下劃線?

^[A-Za-z0-9]+_?[A-Za-z0-9][email protected][A-Za-z0-9]+\.(com|ca|org|net)$

+0

這是如何確保在@之後沒有下劃線的? – CodyBugstein 2013-03-04 17:16:35

+0

由於字符組[A-Za-z0-9]不包含下劃線字符,因此下劃線不匹配。 @符號後面的唯一有效字符串是一個或多個字符,後跟句點,後跟(com | ca | org | net)之一。 – 2013-03-04 17:19:38

+0

如果你還沒有,我推薦一個網站,如[Regex Pal](http://regexpal.com)來測試你的正則表達式對測試字符串。 – 2013-03-04 17:21:39

11

/^[^_]+$/將匹配包含下劃線以外的任何字符1個或多個字符的字符串。

相關問題