2010-07-04 74 views
3

我試圖匹配冒號分隔的電子郵件列表。爲了簡單起見,我將離開電子郵件表達式,並將它與任意數量的字符進行匹配,並在它們之間沒有空格。正則表達式,冒號分隔列表

下面將要匹配...

somevalues ;somevalues;  somevalues; 

somevalues; somevalues    ;somevalues 

的結束;應該沒有必要。

以下內容將不匹配。

somevalues ; some values somevalues; 

some values; somevalues some values 

到目前爲止,我已經得到了這一點,但它不工作。由於我允許冒號之間的空格,因此表達式不知道空格是否在單詞中或冒號之間。

([a-zA-Z]*\s*\;?\s*)* 

以下是匹配的(這不應該E)

somevalue ; somevalues some values; 

我如何表達只允許空間,如果有一個;它的左邊還是右邊?

+0

([a-zA-Z] * \ s * \;?\ s *)*如果我沒有弄錯,只會考慮第一個冒號,那麼爲什麼它與第二個冒號相匹配。 – Prix 2010-07-04 18:51:32

+0

在這裏,你可以知道你需要的一切正則表達式[點擊這裏](http://www.wellho.net/regex/java。html) 2010-07-04 20:38:09

回答

1

以下PCRE表達式應該可以工作。

\w+\s*(?:(?:;(?:\s*\w+\s*)?)+)?

但是,如果把電子郵件地址驗證的正則表達式上,這將需要 與(?:<your email validation regex>)

更換\w+ Probabbly這是你想要什麼,就http://regexr.com?2rnce

編輯測試:但是根據你可能會用哪種語言?需要轉義;作爲\;

+0

這正是我正在尋找的。我正在使用C#中的String.Split,但是我想在性能方面做任何事情之前在客戶端驗證文本框。 – 2010-07-04 20:11:49

+0

你能發佈最終的正則表達式與電子郵件地址驗證? – 2010-07-05 04:42:43

6

爲什麼不只是分開分號,然後將電子郵件地址正則表達?

+4

如果我沒有弄錯分號是RFC822電子郵件地址中的一個有效字符,所以在使用這個電子郵件時確保不包含任何分號時應該小心。 – 2010-07-04 18:57:32

+0

有趣 - 不知道我的前景如何處理。我認爲RFC2822已經取代,但我還沒有閱讀過。 – 2010-07-04 19:07:52

0

問題來自?在\;中?

[a-zA-Z]*(\s*;\s*[a-zA-Z]*)* 

應該工作。

0

嘗試

([a-zA-Z]+\s*;\s*)*([a-zA-Z]+\s*\)? 

注意,我改變*到+在電子郵件模式,因爲我認爲你不希望像;字符串相匹配。