javascript
JavaScript中正则表达式学习笔记
一、正則表達(dá)式是什么:
處理字符串時(shí),經(jīng)常需要處理復(fù)雜規(guī)則的字符串。正則表達(dá)式就是用于描述這些規(guī)則的工具。換句話說,就是記錄文本規(guī)則的代碼。
二、正則表達(dá)式能做什么:
數(shù)據(jù)有效性驗(yàn)證(測(cè)試字符串匹配)如郵箱,電話號(hào)碼等
替換文本
提取子字符串
三、特點(diǎn):
靈活性、邏輯性、功能性非常強(qiáng)
可以迅速的用極簡單的方法達(dá)到字符串的復(fù)雜控制
剛接觸的人比較晦澀難懂
四、規(guī)則
1.普通字符
作用:匹配與之相同的一個(gè)字符。
字母,數(shù)字,漢字,下劃線。
2.非打印字符
\f:匹配一個(gè)換頁符。等價(jià)于 \x0c 和 \cL。
\n:匹配一個(gè)換行符。等價(jià)于 \x0a 和 \cJ。
\r:匹配一個(gè)回車符。等價(jià)于 \x0d 和 \cM。
\t:匹配一個(gè)制表符。等價(jià)于 \x09 和 \cI。
\v:匹配一個(gè)垂直制表符。等價(jià)于 \x0b 和 \cK。
\s:匹配任何空白字符,包括空格、制表符、換頁符等等。等價(jià)于 [ \f\n\r\t\v]。
\S:匹配任何非空白字符。等價(jià)于 [^ \f\n\r\t\v]。
3.特殊字符
作用:在正則表達(dá)式處理中,有特殊意義的字符。
. (點(diǎn)):匹配除換行符以外的任意字符
\w:匹配字符數(shù)字,等同于[A-Za-z0-9]
\d:數(shù)字,等同于[0-9]
\b:單詞開始或結(jié)尾。例如:“er\b”匹配"nerver"的第二個(gè)結(jié)尾處的"er",不匹配"verb"的“er”,因?yàn)椴皇且?#34;er"結(jié)尾
^:開始標(biāo)識(shí)。例如“^a\d”只能匹配“a1”以字母“a”開頭的字符串
$:結(jié)束標(biāo)識(shí)。例如"\da$"只能匹配"1a"以字母"a"結(jié)尾的字符串
*:匹配字符零次或多次,等同于{0,}。例如"ab*c"可以匹配"ac","abc","abbc"等在字母"a"與"c"之間包含零個(gè)或多個(gè)"b"。但不能匹配"abdc"。
+:匹配一次或多次,等同于{1,}。
?:匹配零次或一次。等同于{0,1}。
4.轉(zhuǎn)義字符
作用:查找元字符時(shí)使用。
例如:查找 “.” 需要用“\.”表示。“*” → “\*”?!癨” → “\\”。
5.重復(fù)
作用:表示同一個(gè)字符重復(fù)的次數(shù)。
“*”,“+”,“?”(見元字符解釋)
{n}:重復(fù)n次。例如“ab{3}c”只能匹配“abbbc”。
{n,}:重復(fù)n次或更多次。例如{1,}等同于"+"表示重復(fù)一次或更多次。
{n,m}:重復(fù)n到m次。
6.分支條件
“|”兩邊任一表達(dá)式均生效。
例如:匹配電話號(hào)碼,區(qū)號(hào)為3位或4位,號(hào)碼為7位或8位?!?\d{2}-\d{8}|0\d{3}-\d{7}”
7.分組
用小括號(hào)制定子表達(dá)式
例如:匹配IP地址,(\d{1,3}\.){3}\d{1,3}。但是此方法缺點(diǎn)是可以匹配不符合IP地址規(guī)則的字符串如300.500.123.900。
改進(jìn)以后能夠正確匹配IP地址的表達(dá)式為“((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)”
8.后向引用
作用:使用小括號(hào)置頂一個(gè)子表達(dá)式后,匹配這個(gè)子表達(dá)式的字符串被儲(chǔ)存,可以在表達(dá)式或其他程序中進(jìn)一步處理。
規(guī)則:從左向右,以分組的左括號(hào)為標(biāo)識(shí),第一個(gè)出現(xiàn)的分組為1(使用“\1”表示),依次類推,最大到99。
例如:“(\w)\1”將匹配兩個(gè)重復(fù)的字母或數(shù)字。“aabbc22344”將得到“aa”“bb”“22”“44”而不會(huì)匹配“c”與“3”。
8.1.輔助匹配組(零寬斷言)
作用:作為匹配條件,但不包含在匹配結(jié)果中。
1、正聲明(?=) :括號(hào)中的模式必須出現(xiàn)在聲明右側(cè),但不作為匹配的一部分。
例如:"[\w\#]+(?=\.net)"匹配“文字.net”形式的字符串。"C#.net,VB.net,PHP,Java,JScript.net"的結(jié)果為“C# VB JScript”。
2、負(fù)聲明(?!):括號(hào)中的模式必須不出現(xiàn)在聲明右側(cè)
例如:“\b\w*q(?!u)\w*\b”匹配帶q后面不是跟隨u的單詞?!皉emember aqa?bqu ’abc‘”的結(jié)果為“aqa”。
3、反向正聲明(?<=):括號(hào)中的模式必須出現(xiàn)在聲明左側(cè),但不作為匹配的一部分 。
例如:“(?<=\bre)\w+\b”匹配以re開頭的單詞,但re不作為返回?!皃ublic remember?string ’abc‘”的結(jié)果為“member”。
4、反向負(fù)聲明(?<!):括號(hào)中的模式必須不出現(xiàn)在聲明左側(cè)。
例如:“\b\w*q(?!u)\w*\b”匹配帶q后面不是跟隨u的單詞?!皉emember aqa?bqu ’abc‘”的結(jié)果為“aqa”。
五、JS正則函數(shù)match,exec,test,search,replace,split
由于match與exec很相近容易混淆,所以先說明一下區(qū)別
1.exec是正則表達(dá)式的方法,而不是字符串的方法,所以參數(shù)是字符串。
例如:var reg = new RegExp("abc");
var str = "3abc4,5abc6";
reg.exec(str);
結(jié)果為:“abc”。
2.match是字符串執(zhí)行匹配正則表達(dá)式,所以參數(shù)為正則表達(dá)式。
例如:var reg = new RegExp("abc");
var str = "3abc4,5abc6";
str.match(reg);
結(jié)果為:“abc”。
暫時(shí)寫這么多,有時(shí)間繼續(xù)更新。
轉(zhuǎn)載于:https://www.cnblogs.com/MyFirstBlog/p/4775208.html
總結(jié)
以上是生活随笔為你收集整理的JavaScript中正则表达式学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 让你iPhone桌面图标想放哪里就哪里
- 下一篇: kettle于javascript步骤错