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