「正則規(guī)范整理」

正則表達(dá)式的定義:用來描述或匹配一系列匹配某個(gè)句法規(guī)則的字符串。

正則的語(yǔ)法有哪些:

1. 選擇

豎線 | 料滥,最低優(yōu)先級(jí)

2. 數(shù)量限定

+ 代表符號(hào)前面的字符至少出現(xiàn)一次 (一次 ~ 多次)
册倒?代表符號(hào)前面的字符最多可以出現(xiàn)一次 (0次婴谱、1次)
* 代表符號(hào)前面的字符可以出現(xiàn) (0次 ~ 多次)
{n} 出現(xiàn)n次
{n,} 最少出現(xiàn)n次甜橱,范圍在n~∞
{n,m} 出現(xiàn)次數(shù)n~m之間

3. 匹配

() 定義操作符的范圍和優(yōu)先級(jí)

4. 正則表達(dá)式

字符 描述 示例
^ 匹配開始位置 c
$ 匹配結(jié)束位置 c
. 匹配除\r \n 之外的單個(gè)字符 c
\ 標(biāo)記特殊字符 n桐早、\n
x|y 匹配x或者y c
[xyz] 匹配x或y或z任意一個(gè) c
[^xyz] 匹配未列出的任意字符 c
[a-z] 匹配a-z范圍內(nèi)的小寫字母 c
[^a-z] 匹配不在a-z范圍內(nèi)的字符 c
\b 匹配一個(gè)單詞邊界 er\b : 匹配 never 中的 er 癣缅,不匹配 verb 中的 er
\B 匹配非單詞邊界 er\B : 不匹配 never 中的 er 厨剪,匹配 verb 中的 er
\d 匹配一個(gè)數(shù)字 等價(jià)于[0-9]
\D 匹配一個(gè)非數(shù)字 等價(jià)于[^0-9]
\f 匹配一個(gè)換頁(yè)符 等價(jià)于\x0c和\cL
\n 匹配一個(gè)換行符 等價(jià)于\x0a和\cJ
\r 匹配一個(gè)回車符 等價(jià)于\x0d和\cM
\s 匹配任何空白字符 等價(jià)于[ \f\n\r\t\v]
\S 匹配任何非空白字符 等價(jià)于 [^ \f\n\r\t\v]
\t 匹配一個(gè)制表符 等價(jià)于\x09和\cI
\v 匹配一個(gè)垂直制表符 等價(jià)于\x0b和\cK
\w 匹配包括下劃線的任何單詞字符 等價(jià)于[A-Za-z0-9_]
\W 匹配任何非單詞字符 等價(jià)于[^A-Za-z0-9_]
\cx 匹配由x指明的控制字符,x的值必須為A-Z或a-z \cM匹配一個(gè)Control-M或回車符友存。\ca等效于\u0001, \cb等效于\u0002
(pattern) 用括號(hào)括起來表示一個(gè)子模式祷膳,匹配pattern并獲取這一匹配的子字符串。該子字符串用于向后引用
(?:pattern) 匹配pattern但不獲取匹配的子字符串 industr(?:y | ies)屡立, industry | industries
(?=pattern) 正向肯定預(yù)查直晨,非獲取匹配
(?!pattern) 正向否定預(yù)查,非獲取匹配
(?<=pattern) 反向肯定預(yù)查膨俐,非獲取匹配
(?<!pattern) 反向否定預(yù)查勇皇,非獲取匹配
正則表達(dá)式的獲取匹配和非獲取匹配

用括號(hào)括起來表示一個(gè)子模式,這個(gè)子模式就是一個(gè)獲取匹配焚刺,如果在子模式的前面加上 ?:敛摘、 ?! 、?<=檩坚、 ?<!着撩,就成為非獲取匹配

<div id="test">
Windows 103
Windows 95 and Windows 98 are the successor.
Then Windows 2000 and Windows Xp appeared.
Windows Vista is the Latest version of the family. 
</div>
<button onclick='reg_replace()'>替換</button>

function reg_replace()
{
  var test = document.getElementById("test");
  var regex = /(Windows [\w]+\b)/g; // 加上括號(hào)獲取匹配
  var regex2 = /Windows [\w]+\b/g; // 去掉括號(hào) 非獲取匹配
  var regex3 = /(?:Windows [\w]+\b)/g; //加上?: 非獲取匹配
  test.innerHTML = test.innerHTML.replace(regex,"<span style='background-color:orange'>$1</span>");
}
獲取匹配
非獲取匹配

獲取匹配會(huì)把子模式中保存起來,用于向后引用匾委,同時(shí)可以使用$1引用,一個(gè)括號(hào)代表一個(gè)子模式氓润,$1 表示匹配第一個(gè)括號(hào)里的字符串赂乐,如果有多個(gè)()包含,順序依次向后加 $1 $2 $3 ……$n

非獲取匹配

(?:pattern) 匹配結(jié)果咖气。Java(?:6|7)等效于Java6|Java7挨措,在需要使用()的情況下,同時(shí)不需要把匹配的內(nèi)容進(jìn)行保存崩溪,后面也不需要引用浅役,可以用這種方式,同時(shí)也是對(duì)資源的節(jié)約
在非獲取匹配下伶唯,也不會(huì)擁有分組的組號(hào)

零寬斷言

零寬度的匹配觉既,查找某個(gè)內(nèi)容之前或者之后的內(nèi)容,匹配的內(nèi)容不會(huì)保存到對(duì)應(yīng)的匹配結(jié)果中乳幸,僅僅匹配了一個(gè)位置瞪讼。

1. 正向預(yù)查

(?=pattern) 正向匹配。Java(?=6)粹断,匹配后面跟著6的Java

(?!pattern) 正向不匹配符欠。Java(?!6),匹配后面不跟著6的Java

2. 反向預(yù)查

(?<=pattern) 反向匹配瓶埋。(?<=J)a希柿,匹配緊跟字母J后面的a

(?<!pattern) 反向不匹配诊沪。(?<!J)a,不匹配緊跟字母J后面的a

正則replace特殊標(biāo)記符$
字符 替換文本
$1曾撤、$2娄徊、...、$99 與 regexp 中的第 1 到第 99 個(gè)子表達(dá)式相匹配的文本盾戴。
$& 與 regexp 相匹配的子串寄锐。
$` 位于匹配子串左側(cè)的文本。
$' 位于匹配子串右側(cè)的文本尖啡。
$$ 直接量符號(hào)橄仆。
正則replace應(yīng)用—千分制
// 整數(shù)千分制
let a = '99999999999'.replace(/\d{1,3}(?=(\d{3})+$)/g, '$&,');
// 可以包含小數(shù)點(diǎn)后兩位的千分制
var b = '99999999999.02'.replace(/\d{1,3}(?=(\d{3})+(?:\.\d{1,2})?$)/g, '$&,');
正則符號(hào)的優(yōu)先級(jí)
優(yōu)先權(quán) 符號(hào)
最高 \
()、(?:)衅斩、(?=)盆顾、[]
*、+畏梆、?您宪、{n}、{n,}奠涌、{n,m}
^宪巨、$、中介字符
次最低 串接溜畅,即相鄰字符連接在一起
最低 |
正則的貪婪&非貪婪

貪婪模式捏卓,匹配盡可能多的,屬于貪婪模式的量詞包括 {n,m} {m,} ? * +
非貪婪模式慈格,匹配盡可能少的怠晴,在貪婪模式基礎(chǔ)上再加上?即為非貪婪模式浴捆。

var str='aabab';
var reg=/a.*?b/g;
var res=str.match(reg);
console.log(res); 

結(jié)果:

["aab", "ab"]

先匹配aab蒜田,再匹配ab,由于從左向右最先開始的匹配有最高優(yōu)先級(jí)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末选泻,一起剝皮案震驚了整個(gè)濱河市冲粤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌滔金,老刑警劉巖色解,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異餐茵,居然都是意外死亡科阎,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門忿族,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锣笨,“玉大人蝌矛,你說我怎么就攤上這事〈碛ⅲ” “怎么了入撒?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)椭岩。 經(jīng)常有香客問我茅逮,道長(zhǎng),這世上最難降的妖魔是什么判哥? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任献雅,我火速辦了婚禮,結(jié)果婚禮上塌计,老公的妹妹穿的比我還像新娘挺身。我一直安慰自己,他們只是感情好锌仅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布章钾。 她就那樣靜靜地躺著,像睡著了一般热芹。 火紅的嫁衣襯著肌膚如雪贱傀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天剿吻,我揣著相機(jī)與錄音窍箍,去河邊找鬼。 笑死丽旅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的纺棺。 我是一名探鬼主播榄笙,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼祷蝌!你這毒婦竟也來了茅撞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤巨朦,失蹤者是張志新(化名)和其女友劉穎米丘,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體糊啡,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拄查,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了棚蓄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片堕扶。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡碍脏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出稍算,到底是詐尸還是另有隱情典尾,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布糊探,位于F島的核電站钾埂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏科平。R本人自食惡果不足惜褥紫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望匠抗。 院中可真熱鬧故源,春花似錦、人聲如沸汞贸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)矢腻。三九已至门驾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間多柑,已是汗流浹背奶是。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留竣灌,地道東北人聂沙。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像初嘹,于是被迫代替她去往敵國(guó)和親及汉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 正則表達(dá)式 由一些普通字符和一些元字符(metacharacters)組成屯烦。普通字符包括大小寫的字母和數(shù)字坷随,而元字...
    yshenhn閱讀 1,043評(píng)論 0 0
  • Python中的正則表達(dá)式(re) import rere.match #從開始位置開始匹配,如果開頭沒有則無re...
    BigJeffWang閱讀 7,077評(píng)論 0 99
  • 只能輸入數(shù)字:"^[0-9]*$"驻龟。 只能輸入n位的數(shù)字:"^\d{n}$"温眉。 只能輸入至少n位的數(shù)字:"^\d{...
    johney_zhou閱讀 412評(píng)論 0 1
  • 以前參加過很多婚禮,漸漸對(duì)于婚禮的一貫習(xí)俗已經(jīng)見慣不怪了翁狐,甚至感覺有點(diǎn)走過場(chǎng)了类溢。不過今天的這場(chǎng)婚禮,讓我又有不一樣...
    易經(jīng)起名楊浚菖閱讀 407評(píng)論 0 5
  • 我很害怕高溫的谴蔑,但是在空調(diào)房里憋得太久豌骏,肺又不舒服龟梦,該去有氧呼吸了。身體稍微好點(diǎn)窃躲,選擇終南行计贰。這種狀況下,大壩溝是...
    fe4e49a813e1閱讀 220評(píng)論 0 0