国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript正則表達式定義(語法)總結

2019-11-20 10:50:25
字體:
來源:轉載
供稿:網友

本文講述了javascript正則表達式定義(語法)。分享給大家供大家參考,具體如下:

正則表達式的2種定義方法:一種是直接調用RegExp(),第二種是直接用字面量來定義,即var re = /正則規則/;

2種定義方法本質都是調用RegExp()方法

在調用同一段正則代碼的時候,ECMAScript3和ECMAScript5中表現完全不一樣

function reg(){ var re = //sjavascript/; return re;}

分別在ECMAScript3和ECMAScript5中調用reg()方法多次

在ECMAScript3中,調用的是同一個RegExp對象,在ECMAScript5中,調用的是不同的RegExp對象 因為在EXCMAScript5中每執行一次,就生成一個新的RegExp對象

所以在ECMAScript3中會造成程序的隱患,因為只要在一個地方對這個對象進行修改的話,所有調用到這個對象的地方都會變化。

1.直接量字符

在正則中一般都會直接匹配字符,如

/javascript/
會直接匹配字符javascript

還支持非字母的字符匹配,如:

/o    NUL字符(/u0000)

/t    制表符(/u0009)

/n    換行符(/u000A)

/v    垂直制表符(/u000B)

/f    換頁符(/u000C)

/r    回車符(/u000D)

/xnn   由十六進制數nn指定的拉丁字符,例如,/x0A等價于/n

/uxxxx 由十六進制數xxxx指定的Unicode字符,例如/u0009等價于/t

/cX   控制字符^X,例如,/cJ等價于換行符/n

在正則表達式中,還有一些有特殊含義的標點符號,他們需要'/'來轉義

^$.*+?=!:|//()[]{}

2.字符類

[...]     方括號內的任意字符

[^...]    不在方括號內的任意字符

.        任意字符

/w      任何ASCII字符組成的單詞,等價于[a-zA-Z0-9]

/W       任何不適ASCII字符組成的單詞,等價于[^a-zA-Z0-9]

/s      任何Unicode空白符

/S      任何非Unicode空白符的字符,注意/w和/S不一樣

/d      任何ASCII數值,等價于[0-9]

/D      除了ASCII數字之外的任何字符,等價于[^0-9]

[/b]     退格直接量(特例)

3.重復(次數)

?    0或1次

+    1次或多次

*    任意次

{n}        n次

{m,n}     最少m次,最多n次

{n,}       n次或n次以上

正則默認是貪婪匹配的

如[a+b+]      如果要匹配aaabb,它不會匹配ab和aab等,只會匹配aaabb

[a+?b+?]       這個會匹配aaab   為什么會產生這個區別呢?

答:+?是讓正則非貪婪匹配,那么b這里只會匹配一個b,那為什么a會匹配3個呢?這是因為正則表達式的模式匹配總是會尋找字符串中第一個可能匹配的位置。

4.選項|分組|引用

|  用于分隔可供選擇的字符,如[ab|cd],他既可以匹配ab也可以匹配cd,注意:選擇項的嘗試匹配次序是左→右,因此[a|ab],當a匹配通過了之后,就不匹配ab了,就算ab是更好的匹配

()  1.單獨的項當成子表達式    /java(script)?/     可以匹配javascript和java   即圓括號部分形成子的表達式,可以對子表達式執行| * ?等操作

    2.完整的模式中定義子模式   后面的可以引用前面圓括號起來的表達式   /(['"])[a-z]/1/     /1引用的是第一個圓括號里的表達式,因此引用了['"]

    3.后部引用前面的子表達式  注意: /['"][a-z]['"]/這個正則的意思是     單引號或雙引號加上一個小寫字母加上一個單引號或者雙引號,前后的單雙引號不是匹配的如果你要匹配可以這么寫[(['"])[a-z]/1]

/加數字     可以引用前面圓括號中的表達式   

5.制定匹配位置(錨點)

^    匹配字符串的開頭,在多行檢索中,匹配一行的開頭

$    匹配字符串的結尾,在多行檢索中,匹配一行的結尾

/b    匹配一個單詞的邊界,簡言之,就是位于字符/w和/W之間的位置,或位于字符/w和字符串的開頭或者結尾之間的位置

/B    匹配非單詞邊界的位置

(?=p)   零寬正向先行斷言,要求接下來的字符都與p匹配,但不能包括匹配p的那些字符

(?!p)  零寬負向先行斷言,要求接下來的字符不與p匹配

6.修飾符

寫在正則表達式字面量//右側的

i        執行不區分大小寫的匹配

g        執行一個全局匹配,簡言之,即找到所有的匹配,而不是在找到第一個之后就停止

m       多行匹配模式,^匹配一行的開頭和字符串的開頭,$匹配行的結束和字符串的結束    /java$/m   可以匹配  java/nfunc

注意:當正則表達式是全局的時候,每次exec() 和 test()的時候都會把當前設置的lastIndex設為當前的位置,再次執行的時候就會從lastIndex的位置開始執行,因此最好每次執行的時候lastIndex設置為0

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 和静县| 莎车县| 衡水市| 静宁县| 兴义市| 金昌市| 长岛县| 浙江省| 交城县| 彰化市| 青浦区| 定陶县| 汤阴县| 普陀区| 呼玛县| 崇义县| 合肥市| 任丘市| 永德县| 稷山县| 吴桥县| 潼南县| 海口市| 塔城市| 涪陵区| 双城市| 德庆县| 扶沟县| 舒兰市| 桂林市| 汨罗市| 锡林郭勒盟| 临漳县| 东丰县| 扎兰屯市| 中西区| 宁乡县| 新民市| 屏南县| 大竹县| 潞西市|