3 回答

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以對(duì)不想匹配的模式進(jìn)行負(fù)面展望并使用此正則表達(dá)式,
^(?!\d{4}-\d{10})(?!\d{10}-\d{4})\d{4}-?\d{6}-?\d{4}$
解釋:
^
--> 字符串開頭(?!\d{4}-\d{10})
--> 負(fù)前瞻以避免匹配此模式(?!\d{10}-\d{4})
--> 負(fù)前瞻以避免匹配此模式\d{4}-?\d{6}-?\d{4}
--> 匹配你想要的模式$
--> 字符串結(jié)束
我能想到的另一種模式,更簡(jiǎn)單優(yōu)雅,你可以用這個(gè),
^\d{4}(-?)\d{6}\1\d{4}$
解釋:
^
--> 字符串開頭\d{4}
--> 正好匹配四位數(shù)字(-?)
--> 匹配一個(gè)可選的連字符并在組 1 中捕獲\d{6}
--> 精確匹配六位數(shù)\1
--> 這確保兩個(gè)連字符都存在或不存在,如正則表達(dá)式中所述\d{4}
--> 正好匹配四位數(shù)字$
--> 字符串結(jié)束

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
只需將 or 與模式或 14 個(gè)數(shù)字一起使用。
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)

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊
^([\d]{4}[-]?[\d]{6}[-]?[\d]{4})|([\d]{16})$
希望這可以幫助!它有兩個(gè)正則表達(dá)式,一個(gè)帶有 hiphens,另一個(gè)帶有整數(shù)(16 位)
添加回答
舉報(bào)