[英]Regex for form field validation
我有一個表單,它有一個特殊類型的字段。這需要驗證。 狀況
我試過這個模式
/[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.