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

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

帶破折號分隔符的 RegEX 14 位驗證

帶破折號分隔符的 RegEX 14 位驗證

精慕HU 2022-01-19 15:38:54
我正在使用以下正則表達式^[\d]{4}[-]?[\d]{6}[-]?[\d]{4}$ 來驗證 14 個數字作為一個整體或劃分為4 digits - 6 digits - 4 digits以下四個示例與我的正則表達式匹配,但我想排除最后兩個示例。1111-111111-1111 - (根據我的業務邏輯有效)12341234561234 - (根據我的業務邏輯有效)1111-111111111 - (我希望這是無效的)1111111111-1111 - (我希望這是無效的)
查看完整描述

3 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

您可以對不想匹配的模式進行負面展望并使用此正則表達式,

^(?!\d{4}-\d{10})(?!\d{10}-\d{4})\d{4}-?\d{6}-?\d{4}$

解釋:

  • ^ --> 字符串開頭

  • (?!\d{4}-\d{10}) --> 負前瞻以避免匹配此模式

  • (?!\d{10}-\d{4}) --> 負前瞻以避免匹配此模式

  • \d{4}-?\d{6}-?\d{4} --> 匹配你想要的模式

  • $ --> 字符串結束

演示

我能想到的另一種模式,更簡單優雅,你可以用這個,

^\d{4}(-?)\d{6}\1\d{4}$

解釋:

  • ^ --> 字符串開頭

  • \d{4} --> 正好匹配四位數字

  • (-?) --> 匹配一個可選的連字符并在組 1 中捕獲

  • \d{6} --> 精確匹配六位數

  • \1 --> 這確保兩個連字符都存在或不存在,如正則表達式中所述

  • \d{4} --> 正好匹配四位數字

  • $ --> 字符串結束

演示


查看完整回答
反對 回復 2022-01-19
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

只需將 or 與模式或 14 個數字一起使用。


var re = /^(\d{4}-\d{6}-\d{4}|\d{14})$/


function test(str) {

  console.log(str, re.test(str))

}


['1234-123456-1234', '12341234561234',

'1234-1234561234', '1234123456-1234'].forEach(test)


查看完整回答
反對 回復 2022-01-19
?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

^([\d]{4}[-]?[\d]{6}[-]?[\d]{4})|([\d]{16})$

希望這可以幫助!它有兩個正則表達式,一個帶有 hiphens,另一個帶有整數(16 位)


查看完整回答
反對 回復 2022-01-19
  • 3 回答
  • 0 關注
  • 220 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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