2014-11-22 67 views
0

我希望用戶輸入他們的用戶名只能使用字母數字和點字符。 所以我寫了一個正則表達式如下:2個正則表達式有什麼區別?

'/([a-zA-Z0-9\.]+)/' 

但我想知道的是它與同:

'/([a-zA-Z0-9.]+)/' 

2以下的圖案是一樣的嗎?謝謝你的幫助! :-)

+1

據我所知,這是相同的,因爲你不必逃避一個點! – Rizier123 2014-11-22 10:41:39

+0

您不需要使用捕獲組。 – 2014-11-22 11:00:04

回答

4

您不需要轉義字符類中存在的點。在字符類中,點.和轉義點\.與字面點匹配。所以這兩個正則表達式都是一樣的。

而且爲了驗證的目的,我建議你添加像'/^[a-zA-Z0-9.]+$/'這樣的錨點。錨將用於做一個確切的字符串匹配。也就是說,/[a-zA-Z0-9.]+/正則表達式將匹配子foo在這個()foo輸入字符串,但如果添加的開始和結束錨您正則表達式像/^[a-zA-Z0-9.]+$/,它甚至不會單個字符輸入的字符串相匹配。它允許只匹配一個或多個字母數字或點的字符,如果發現比點或字母數字以外的字符,則正則表達式引擎將不匹配相應的字符串。

+0

正則表達式大師:D +1!非常好的回答 – Rizier123 2014-11-22 10:44:13

+0

謝謝,很好的答案! – Geany 2014-11-22 10:47:14

+0

@AvinashRaj我錯了,認爲答案是不正確的。我刪除了downvote,我的錯。 – Nerixel 2014-11-22 10:47:23

相關問題