我試圖創建一個正則表達式模式,允許用戶使用以下規範創建一個用戶名。 (對於該初始圖案的目的,我只使用標準的美國英語字母表。Javascript正則表達式模式
第一個字符必須是字母字母(大寫或小寫)。[A-ZA-Z] 的最後一個字符必須是一個字母數字(大寫或小寫)[A-ZA-Z0-9] 之間必須是字母或數字與一個規則的任何字符:(。)
用戶可以使用一個週期,破折號( - ),或下劃線(_),但它必須跟一個字母數字字符。因此,一次不重複一個或多個這些字符。
我試過以下正則表達式模式,但沒有得到結果我wa的希望。感謝您花時間幫助我解決這個問題。
^[a-zA-Z]([a-zA-Z0-9]+[._-]?[a-zA-Z0-9]+)+$
編輯
它實際上可能是工作我預期的方式。但我總是得到兩場比賽回到我身邊。第一個是整個有效的字符串,第二個是第一個字符串的縮寫版本,通常會切斷第一個字符。的有效輸入
實例:
- Spidy
- Spidy.Man
- AMA-ZA-zing_Spidy的無效輸入
實例:
- Extreme_ _ _Spi DY(重複下劃線)
- 的_-_ Spidy(重複特殊字符)
- _ _ SPIDY _ _(開始和有特殊字符結尾)
謝謝,這是我自己的更好的代表。任何想法爲什麼我的text.match(模式)返回多個匹配? – Spidy
圓括號加倍捕獲組,所以你也看到了捕獲的值。你可以放棄所有這些,因爲你需要知道的只是字符串是否匹配。 –