簡體   English   中英

JavaScript正則表達式-匹配一個包含一些字符但不包含其他字符的字符串

[英]JavaScript Regex - Match a string with that contains some characters and doesn't contain others

要求:

正則表達式應與不包含“ @”符號但至少包含兩個字母字符且長度在2至50個字符之間的字符串匹配。

通過示例:

"Hi there!%%#"
"         fd"
"  9 z 80212132 z"

失敗示例:

"anything with @"
"a"
"  9 z 80212132 "
"This string does not contain at symbol and has two characters but is too long!"

我相信我已經接近了,但是除[a-zA-Z]之外的任何其他字符都將失敗,並且我不確定為什么:

^((?![@])(?=[a-zA-Z]).){2,50}$

您的正則表達式不會檢查至少兩個Alpha。

您可以使用以下正則表達式:

^(?=(?:[^A-Za-z]*[A-Za-z]){2})[^@]{2,50}$

正則表達式演示

說明

  • ^ -字符串的開頭
  • (?=(?:[^A-Za-z]*[A-Za-z]){2}) -必須至少出現兩次零個或多個非字母字符,后跟一個字母
  • [^@]{2,50} - @以外的2到50個字符
  • $ -字符串結尾。

 var re = /^(?=(?:[^A-Za-z]*[A-Za-z]){2})[^@]{2,50}$/; var strs = ['Hi there!%%#', ' fd' , ' 9 z 80212132 z', 'anything with @ a', ' 9 z 80212132 ', 'This string does not contain at symbol and has two characters but is too long!']; // demo for (var s of strs) { document.body.innerHTML += "<i>" + s.replace(/ /g, '&nbsp;') + "</i> test result: <b>" + re.test(s) + "</b><br/>"; } 

它確保:

  • 沒有字符是@
  • 至少2個Alpha字符
  • 總數在2至50之間

^(?!.*@)(?=(?:.*[a-zA-Z]){2}).{2,50}$

DEMO

暫無
暫無

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

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