亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用于驗證帶有可選空格的字母數字字符串的正則表達式

用于驗證帶有可選空格的字母數字字符串的正則表達式

夢里花落0921 2023-05-25 15:45:00
我一直在研究一個正則表達式,用于使用以下規則驗證字母數字字符串:前四個起始字符必須是數字,最后 兩個字符必須是字母??崭袷强蛇x的,但必須放在兩個字符之間,這意味著不允許使用尾隨空格。如果 不包括空格,則郵政編碼的長度必須為6 個字符,如果包括空格,則必須為7 個字符。例如。第1111章111 1ZZ1 111ZZ1111ZZ我嘗試使用^[0-9]{4}[A-Za-z]{2}$|^(?=[\d|\D]+ [\d|\D]+).{7}$,但這也將9999 1A驗證為 TRUE,實際上應該是 FALSE。任何線索或幫助將不勝感激:)
查看完整描述

3 回答

?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

(?=^.{6,7}$)^(([0-9] ?){4}( ?[a-zA-Z]){2})$

將匹配

  • 第1111章

  • 111 1ZZ

  • 1 111ZZ

  • 1111ZZ

  • 第1111章

但不是

  • 9999 1A

  • 11111Z

  • 1111111

  • 11 11 ZZ

https://regex101.com/r/lByOx6/1

編輯:解釋

“積極前瞻”部分:

  • (?=^.{6,7}$)這僅在字符串滿足要求時才匹配,但它不會“消耗”字符。

    • . 是任何字符

    • {6,7} 是關于重復

如果字符串有 6 個或 7 個字符,則匹配so (?=^.{6,7}$),無論如何

然后下面的部分已經“消耗”了字符串,說我想要在開始時重復 4 次數字和可選的空格,在結束時重復 2 次字母和可選的空格。第二部分將接受諸如此類的字符串,1 1 1 1  Z Z但由于這些字符串超過 7 個字符,因此第一部分不會讓字符串匹配。


查看完整回答
反對 回復 2023-05-25
?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

我建議通過減少所有你似乎不感興趣的空格來提前簡化問題:

var candidate = input.replaceAll(/\s/mg, '');

那么正則表達式就是:/^\d{4}[A-Za-z]{2}$/

但是,如果您需要驗證實際上沒有前導或尾隨空格,您可以提前驗證并立即返回否定結果。


查看完整回答
反對 回復 2023-05-25
?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

另一種選擇是檢查字符串是否在第一個和最后一個非空白字符之間包含可選空格。

然后匹配第一個數字后跟由可選空格分隔的 3 位數字和 2 或 3 倍的字符 a-zA-Z 或空格。

使用不區分大小寫的匹配:

^(?=\S+ ?\S+$)\d(?: ?\d){3}[A-Z ]{2,3}$

解釋

  • ^字符串的開始

  • (?=正面前瞻,斷言右邊是什么

    • \S+ ?\S+$匹配第一個和最后一個非空白字符之間的可選空格

  • ) 關閉前瞻

  • \d(?: ?\d){3}匹配一個數字并重復 3 次可選空格和一個數字

  • [a-zA-Z ]{2,3}匹配 2-3 次字符 a-zA-Z 或空格

  • $字符串結束

正則表達式演示


查看完整回答
反對 回復 2023-05-25
  • 3 回答
  • 0 關注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號