2013-12-14 48 views
0

試圖對輸入字段進行簡單的名稱驗證。我不需要列出失敗和通過的列表。名稱驗證的簡單正則表達式

我所試圖做的是:

  • 整個輸入可以是無(0)或32總一個最大
  • 如果輸入了什麼東西,它必須與一個字符
  • 任何啓動在一個字符之後,它可以包含[az' - 。,]的任意組合

最大值似乎不工作,並且輸入0和1個字符時失敗。我一直對這些都不好,因爲他們對我來說沒什麼意義。嘗試了很多事情。

/^([a-z]+[a-z '-.,]*){0,32}$/i 

回答

2

+在正則表達式的意思是「重複前一個字符的一個或多個次」 *指「重複前面的字符零次或多次,」和{0, 32}指「重複前面的字符零到32次。」因此([a]+[b]*){0,32}重複重複,然後重複。

我想你想的正則表達式是

/^[a-z][a-z '-.,]{0,31}$|^$/i 

說明here

  • 第一備選物:在字符串
  • [a-z]匹配單開始^[a-z][a-z '-.,]{0,31}$
    • ^斷言位置字符目錄在列表中流
      • a-z在a和z(不區分大小寫)
    • [a-z '-.,]{0,31}匹配下面
      • Quantifier存在於列表中的單個字符之間的範圍中的單個字符:0和31之間的時間,因爲許多次數儘可能,用之於根據需要[貪婪]
      • a-zaz之間的範圍中的單個字符(不區分大小寫)
      • <space>的文字字符<space>
      • '-.的範圍內的單個字符'.
      • ,的文字字符,
    • $斷言位置之間在所述串的端
  • 第二替代品:^$
      在字符串
    • $斷言位置的開始
    • ^斷言位置在字符串
+1

31或32的端部 - 您使用兩者。錯字?和耶!爲Regex101.com! – Floris

+0

對不起,本來應該說31. –

+0

我覺得還是有些混亂。該匹配也應該對零字符有效。 – Floris