第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

正則匹配日期,請高手給翻譯一下這條正則什么含義?

正則匹配日期,請高手給翻譯一下這條正則什么含義?

森林海 2018-12-20 18:19:21
在http://www.jb51.net/article/2...網(wǎng)站上看到匹配日期的一個(gè)正則,表示很疑惑,沒看懂,請高手指點(diǎn)。^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$ 匹配結(jié)果如下:1, ?:是什么意思?2, ?! 是什么意思?
查看完整描述

1 回答

?
繁花不似錦

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊

首先你這個(gè)例子中的匹配表達(dá)式也太長了,匹配個(gè)日期根本不需要這么麻煩,不建議糾結(jié)這個(gè)表達(dá)式,可以找到更好的正則寫法,我就你的兩點(diǎn)問題做一個(gè)回答吧。
1.簡單來說,(?:)就是為了分組,但是不捕獲下來供正則表達(dá)式其他部分使用,就是說不能使用\1,\2這種捕獲的子模式。
舉個(gè)例子

var pattern1=/aacdaa/;

var pattern2=/(?:aa|bb)cd\1/;

var pattern3=/(aa|bb)cd\1/;


var str="aacdaa";

console.log(str.match(pattern1)); // ["aacdaa", index: 0, input: "aacdaa"]

console.log(str.match(pattern2)); // null

console.log(str.match(pattern3)); // ["aacdaa", "aa", index: 0, input: "aacdaa"]

第一個(gè)匹配到了,沒問題,普通的匹配

第二個(gè)就沒匹配到,因?yàn)閈1在這里無法識別,是非獲取匹配

第三個(gè)就匹配到了,因?yàn)?)是獲取性匹配,看后面的輸出 數(shù)組中第二項(xiàng)是aa,匹配了這個(gè)子模式,可以供后續(xù)使用,后面的\1就是匹配到的子模式aa。


所以說(?:)的作用就是為了分組,它和()的區(qū)別在上面這個(gè)例子中已經(jīng)表現(xiàn)出來了,至于它和普通模式的區(qū)別,就體現(xiàn)在分組的便利上。

上面的例子改一下:


var pattern4=/aacd|bbcd/;

var pattern5=/(?:aa|bb)cd/;

兩種寫法是一樣的匹配模式,但是用了分組之后,簡潔了不少,這就是非獲取匹配的最常用的作用


2.(?!p)是負(fù)向先行斷言,意思是要求接下來的字符不與p表達(dá)式匹配,,還有一個(gè)(?=p)也一塊說了吧,這個(gè)正好和?!相反,稱為正向先行斷言,要求接下來的字符與p表達(dá)式匹配。也就是說這里的(?:)和(?!)起的就是一個(gè)條件作用,用來判斷前面的表達(dá)式滿足不滿足p這個(gè)條件,只有滿足了才匹配,不滿足就不匹配。

同樣用上面類似的例子來說明:


var pattern6=/aa(?=cd)/;

var pattern7=/aa(?!cd)/;

var s1="aacd";

var s2="aabb";

console.log(s1.match(pattern6),s1.match(pattern7));//["aa", index: 0, input: "aacd"] , null

console.log(s2.match(pattern6),s2.match(pattern7));//null , ["aa", index: 0, input: "aabb"]

s1匹配了pattern6,因?yàn)閟1中的aa后面接著的是cd,s2匹配了pattern7,因?yàn)閟1中的aa后面接著的不是cd。


查看完整回答
反對 回復(fù) 2019-01-03
  • 1 回答
  • 0 關(guān)注
  • 421 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號