一千萬個為什麽

搜索

正則表達式(字母數字)

我需要一個正則表達式來允許用戶輸入以字母(而不是數字)開頭的字母數字字符串。

最佳答案

這應該在正則表達式(RE)引擎的任何中工作。 PCRE世界有更好的語法,但我更喜歡我的能夠在任何地方運行:

^[A-Za-z][A-Za-z0-9]*$

基本上,第一個字符必須是alpha,後跟零個或多個字母數字。開始和結束標記用於確保整行匹配。如果沒有這些,您可能會匹配“@@@ AB12 !!!”字符串的 AB12

完整的解釋:

^            start tag.
[A-Za-z]     any one of the upper/lower case letters.
[A-Za-z0-9]  any one of the upper/lower case letters or digits,
*            repeated zero or more times.
$            end tag

更新</強>

正如Richard Szalay正確地指出的那樣,這僅僅是ASCII(或者更準確地說,任何編碼方案,其中A-Z,a-z和0-9組是連續的)並且僅用於“英文”字母。

如果你想要真正的國際化的RE(只有你知道這是否是一個需求),你需要使用一個更合適的RE引擎,比如上面提到的PCRE,並確保它被編譯為Unicode模式。然後,您可以分別對字母和數字使用“字符”,例如 \ p {L}\ p {N} 。我認為RE在這種情況下會是:

^\p{L}[\pL\pN]*$

但我不確定。我從來沒有使用過我們國際化軟件的RE。請參閱此處以獲得比您想要了解的PCRE更多的知識。

轉載註明原文: 正則表達式(字母數字)