我在創建正則表達式驗證程序時遇到問題,該驗證程序檢查以確保輸入僅包含大寫或小寫字母字符,空格,句點,下劃線和破折號。無法通過搜索在線查找此示例。例如:正則表達式只允許大寫/小寫字母(英文字母),句點,空格和破折號是什麼?
這些都OK:
Dr. Marshall
sam smith
.george con-stanza .great
peter.
josh_stinson
smith _.gorne
含有其他字符任何是不行的。這是數字或其他符號。
我在創建正則表達式驗證程序時遇到問題,該驗證程序檢查以確保輸入僅包含大寫或小寫字母字符,空格,句點,下劃線和破折號。無法通過搜索在線查找此示例。例如:正則表達式只允許大寫/小寫字母(英文字母),句點,空格和破折號是什麼?
這些都OK:
Dr. Marshall
sam smith
.george con-stanza .great
peter.
josh_stinson
smith _.gorne
含有其他字符任何是不行的。這是數字或其他符號。
你正在尋找的正則表達式是^[A-Za-z.\s_-]+$
^
聲稱,正則表達式必須在主題[]
的開始匹配的字符類 - 匹配這裏面表達的任何字符允許A-Z
允許大寫字符的範圍a-z
允許一系列小寫字符.
相匹配的週期 而不是字符範圍\s
匹配空白(空格和製表符)_
下劃線-
破折號(連字符)相匹配的匹配;我們將它作爲字符類中的最後一個字符,因此它不會被解釋爲字符範圍的一部分。我們也無法逃脫它(\-
)來代替,並把它放在字符類的任何地方,但是這不太清楚+
稱,前面的表達式(在我們的情況下,字符類)必須匹配一次或多次$
最後,這個斷言,我們現在是在主題當你測試正則表達式的結束,你可能會發現像regexpal有用的工具。這允許您在寫入時實時查看您的正則表達式匹配(或無法匹配)您的示例數據。
查看a tutorial中正則表達式的基礎知識。它所需要的是二anchors和repeatedcharacter class:
^[a-zA-Z ._-]*$
如果使用不區分大小寫的修改,可以縮短這
^[a-z ._-]*$
注意的空間顯著(這只是一個字符像其他任何)。
將其限制爲ASCII!一般而言,您需要像'^ [\ p {Upper} \ p {Lower} ._-] * $'或'^ [\ p {Letter} ._-] * $'。 – MRAB
@MRAB通常是的,但並不是所有的正則表達式都支持(我們不知道OP的風格)。另外,他甚至可能不支持unicode輸入。最後,在考慮unicode屬性之前,OP應該首先學習正則表達式的基礎知識。 –
'。-_'表示'\ x2e- \ x5f',I.E一個範圍,如'a-z' – Esailija
@ m.buettner很好,趕快! – Kelvin
另外,如果你想逐元解釋正則表達式,你應該在正則表達式中使用[free-spacing mode](http://www.regular-expressions.info/freespacing.html)和'#'註釋。它更具可讀性,可以與所有評論一起復制到OP的代碼中。 –