2016-06-14 192 views
2

我期待在javascript中使用正則表達式進行名稱檢查。[字母數字]的正則表達式建議[字母數字.- _ @] 31個字符

  1. 的值可以包含字母數字和下列特殊字符 ( ' - ', '_' 和 '@' '')。
  2. 它應該始終以字母數字字符開頭。
  3. 它不應該是一個空字符串。
  4. 此參數的最大允許長度爲31個字符。
  5. 該參數不區分大小寫。

我想出了這個,但覺得不正確。有關如何讓它萬無一失的任何建議?

^[A-Za-z0-9]+[[email protected]]{30} 
+0

您應該進一步將'-'移動到'[A-Za-z0-9 _ @ .-]'的末尾,並且不要使用固定重複的'30',而是使用0-30'{0,30}' –

+0

你可以將'[A-Za-z0-9 _ @ .-]'改成'[\ w @ .-]' –

+0

@SebastianProske - Ohr right。如果我放一個{30}它只會查找長度= 30的權利?我需要它匹配30以下的任何東西。所以..這樣的事情?^[A-Za-z0-9] [A-Za-z0-9 _ @ .-] {0,30}我們正在移動 - 到最後,因爲它不應該像A-Z表示那樣拾取一系列字符? – blueren

回答

4

你是非常接近,這裏是正確的正則表達式:

/^[a-z0-9][\[email protected]]{0,30}$/i 

我施加的folloing變化:

  • 添加$錨固到端
  • 使用的i改性劑不區分大小寫
  • \w替換a-zA-Z0-9_並移動-到端字符分類
  • 更改固定重複{30}{0,30}

請參閱Regex101-Demo進行一些單元測試。

1
^[A-Za-z0-9][[email protected]]{0,30} 
  • 地方-在與托架的,所以它不會被用作範圍
  • 允許1-31字符{,30}
  • 除去+第一字符之後(沒有它你會得到> 31個字符)
1

您可以隨時在www.regexr.com

  • 檢查你的模式你需要躲避「 - 」與和反斜線:\-
  • 您需要刪除+中間部分
  • 變化{30}{0,30},因爲它並不需要準確地31個字符長
  • 添加\我到底爲不區分大小寫,刪除A-Z零件
  • 關閉圖案$

結果是這樣的:

/[a-z0-9][[email protected]\-._]{0,30}/i 
相關問題