簡體   English   中英

用於表單字段驗證的正則表達式

[英]Regex for form field validation

我有一個表單,它有一個特殊類型的字段。這需要驗證。 狀況

  1. 它必須至少包含 1 個字母。大寫和小寫都是允許的 [強制]
  2. 它可以包含一個數字 [可選]
  3. 它可以包含以下特殊字符中的任意 1 個或全部 3 個:連字符 (-)、與號 (&)、句點 (.)[可選]
  4. 長度最少 5 最多 100
  5. 字母之間可以包含空格 [可選]

我試過這個模式

/[a-zA-Z0-9]+|[\s]+|[\.]+|[\&]+|[\-]+/

但它沒有給出預期的輸出。

例子:

abcd xyz ->must pass test(letter must, 5<characters count<100,space optional)
abcdxyz  ->must pass test(letter must, 5<characters count<100,space optional)
abcd & ->must pass test
abcd1234 ->must pass test
abcd.xyz.12 ->must pass test
123456 ->must fail test(no letters found)
&&&&&&& ->must fail test(no letters found)
&&&--..& ->must fail test(no letters found)
123 abcd.xyz 777-& !$ ->must fail test(!$ are not allowed)

我可以單獨計算字符串長度,但我需要其余部分的正則表達式。 我在用

str.match(/regex/)

如果你可以單獨測試長度,這可以完成這項工作: ^(?:[a-zA-Z0-9 .&-]*)?[a-zA-Z]+(?:[a-zA-Z0-9 .&-]*)?$ 這里很難計算的是{5,100}將測試子模式的出現次數,而不是它找到的字母總數。

說明(按順序):

  • 字符串的開始
  • 可以選擇找到任意數量的字母/數字和“.&-”
  • 必須找到至少一封信
  • 可以選擇找到任意數量的字母/數字和“.&-”
  • 字符串結尾

改編自Regex101 代碼生成器的示例:

 const regex = /^(?:[a-zA-Z0-9 .&-]*)?[a-zA-Z]+(?:[a-zA-Z0-9 .&-]*)?$/; const strs = [ 'abcd xyz', 'abcdxyz', 'abcd &', 'abcd1234', 'abcd.xyz.12', '123456', '&&&&&&&', '&&&--..&', '123 abcd.xyz 777-& !$' ]; let m, i, l = strs.length; for(i = 0; i < l; i++){ if( (m = strs[i].match(regex)) ){ console.log('Found match: ', m); }else{ console.log('Doesn\\'t match: ', strs[i]); } }

注意:如果您打算使用它作為密碼,這樣的規則是一個壞主意,現在正式不鼓勵

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM