javascript正則表達(dá)式定義(語(yǔ)法)總結(jié)
本文講述了javascript正則表達(dá)式定義(語(yǔ)法)。分享給大家供大家參考,具體如下:
正則表達(dá)式的2種定義方法:一種是直接調(diào)用RegExp(),第二種是直接用字面量來定義,即var re = /正則規(guī)則/;
2種定義方法本質(zhì)都是調(diào)用RegExp()方法
在調(diào)用同一段正則代碼的時(shí)候,ECMAScript3和ECMAScript5中表現(xiàn)完全不一樣
function reg(){
var re = /\sjavascript/;
return re;
}
分別在ECMAScript3和ECMAScript5中調(diào)用reg()方法多次
在ECMAScript3中,調(diào)用的是同一個(gè)RegExp對(duì)象,在ECMAScript5中,調(diào)用的是不同的RegExp對(duì)象 因?yàn)樵贓XCMAScript5中每執(zhí)行一次,就生成一個(gè)新的RegExp對(duì)象
所以在ECMAScript3中會(huì)造成程序的隱患,因?yàn)橹灰谝粋€(gè)地方對(duì)這個(gè)對(duì)象進(jìn)行修改的話,所有調(diào)用到這個(gè)對(duì)象的地方都會(huì)變化。
1.直接量字符
在正則中一般都會(huì)直接匹配字符,如
/javascript/
會(huì)直接匹配字符javascript
還支持非字母的字符匹配,如:
\o NUL字符(\u0000)
\t 制表符(\u0009)
\n 換行符(\u000A)
\v 垂直制表符(\u000B)
\f 換頁(yè)符(\u000C)
\r 回車符(\u000D)
\xnn 由十六進(jìn)制數(shù)nn指定的拉丁字符,例如,\x0A等價(jià)于\n
\uxxxx 由十六進(jìn)制數(shù)xxxx指定的Unicode字符,例如\u0009等價(jià)于\t
\cX 控制字符^X,例如,\cJ等價(jià)于換行符\n
在正則表達(dá)式中,還有一些有特殊含義的標(biāo)點(diǎn)符號(hào),他們需要'\'來轉(zhuǎn)義
^$.*+?=!:|\/()[]{}
2.字符類
[...] 方括號(hào)內(nèi)的任意字符
[^...] 不在方括號(hào)內(nèi)的任意字符
. 任意字符
\w 任何ASCII字符組成的單詞,等價(jià)于[a-zA-Z0-9]
\W 任何不適ASCII字符組成的單詞,等價(jià)于[^a-zA-Z0-9]
\s 任何Unicode空白符
\S 任何非Unicode空白符的字符,注意\w和\S不一樣
\d 任何ASCII數(shù)值,等價(jià)于[0-9]
\D 除了ASCII數(shù)字之外的任何字符,等價(jià)于[^0-9]
[\b] 退格直接量(特例)
3.重復(fù)(次數(shù))
? 0或1次
+ 1次或多次
* 任意次
{n} n次
{m,n} 最少m次,最多n次
{n,} n次或n次以上
正則默認(rèn)是貪婪匹配的
如[a+b+] 如果要匹配aaabb,它不會(huì)匹配ab和aab等,只會(huì)匹配aaabb
[a+?b+?] 這個(gè)會(huì)匹配aaab 為什么會(huì)產(chǎn)生這個(gè)區(qū)別呢?
答:+?是讓正則非貪婪匹配,那么b這里只會(huì)匹配一個(gè)b,那為什么a會(huì)匹配3個(gè)呢?這是因?yàn)檎齽t表達(dá)式的模式匹配總是會(huì)尋找字符串中第一個(gè)可能匹配的位置。
4.選項(xiàng)|分組|引用
| 用于分隔可供選擇的字符,如[ab|cd],他既可以匹配ab也可以匹配cd,注意:選擇項(xiàng)的嘗試匹配次序是左→右,因此[a|ab],當(dāng)a匹配通過了之后,就不匹配ab了,就算ab是更好的匹配
() 1.單獨(dú)的項(xiàng)當(dāng)成子表達(dá)式 /java(script)?/ 可以匹配javascript和java 即圓括號(hào)部分形成子的表達(dá)式,可以對(duì)子表達(dá)式執(zhí)行| * ?等操作
2.完整的模式中定義子模式 后面的可以引用前面圓括號(hào)起來的表達(dá)式 /(['"])[a-z]\1/ \1引用的是第一個(gè)圓括號(hào)里的表達(dá)式,因此引用了['"]
3.后部引用前面的子表達(dá)式 注意: /['"][a-z]['"]/這個(gè)正則的意思是 單引號(hào)或雙引號(hào)加上一個(gè)小寫字母加上一個(gè)單引號(hào)或者雙引號(hào),前后的單雙引號(hào)不是匹配的如果你要匹配可以這么寫[(['"])[a-z]\1]
\加數(shù)字 可以引用前面圓括號(hào)中的表達(dá)式
5.制定匹配位置(錨點(diǎn))
^ 匹配字符串的開頭,在多行檢索中,匹配一行的開頭
$ 匹配字符串的結(jié)尾,在多行檢索中,匹配一行的結(jié)尾
\b 匹配一個(gè)單詞的邊界,簡(jiǎn)言之,就是位于字符\w和\W之間的位置,或位于字符\w和字符串的開頭或者結(jié)尾之間的位置
\B 匹配非單詞邊界的位置
(?=p) 零寬正向先行斷言,要求接下來的字符都與p匹配,但不能包括匹配p的那些字符
(?!p) 零寬負(fù)向先行斷言,要求接下來的字符不與p匹配
6.修飾符
寫在正則表達(dá)式字面量//右側(cè)的
i 執(zhí)行不區(qū)分大小寫的匹配
g 執(zhí)行一個(gè)全局匹配,簡(jiǎn)言之,即找到所有的匹配,而不是在找到第一個(gè)之后就停止
m 多行匹配模式,^匹配一行的開頭和字符串的開頭,$匹配行的結(jié)束和字符串的結(jié)束 /java$/m 可以匹配 java\nfunc
注意:當(dāng)正則表達(dá)式是全局的時(shí)候,每次exec() 和 test()的時(shí)候都會(huì)把當(dāng)前設(shè)置的lastIndex設(shè)為當(dāng)前的位置,再次執(zhí)行的時(shí)候就會(huì)從lastIndex的位置開始執(zhí)行,因此最好每次執(zhí)行的時(shí)候lastIndex設(shè)置為0
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- Javascript中正則表達(dá)式的使用及基本語(yǔ)法
- 正則表達(dá)式基本語(yǔ)法及表單驗(yàn)證操作詳解【基于JS】
- JS正則表達(dá)式一條龍講解(從原理和語(yǔ)法到JS正則)
- 詳解js正則表達(dá)式語(yǔ)法介紹
- 老生常談JavaScript 正則表達(dá)式語(yǔ)法
- JavaScript正則表達(dá)式上之基本語(yǔ)法(推薦)
- js正則表達(dá)式基本語(yǔ)法(精粹)
- js 玩轉(zhuǎn)正則表達(dá)式之語(yǔ)法高亮
- 正則表達(dá)式語(yǔ)法規(guī)則及在Javascript和C#中的使用方法
- javascript中正則表達(dá)式語(yǔ)法詳解
相關(guān)文章
JavaScript禁用右鍵單擊優(yōu)缺點(diǎn)分析
在本篇文章里小編給大家分享了關(guān)于JavaScript禁用右鍵單擊優(yōu)缺點(diǎn)分析,有需要的朋友們學(xué)習(xí)下。2019-01-01
javascript substr和substring用法比較
在js中substring和substr都是用來截取字符串的,那么substring和substr之間的具體區(qū)別在哪里,有沒有區(qū)別呢,下面我來給各位詳細(xì)引用一些實(shí)例來介紹這些問題2009-06-06
詳解javascript立即執(zhí)行函數(shù)表達(dá)式IIFE
本文主要介紹了javascript立即執(zhí)行函數(shù)表達(dá)式IIFE的相關(guān)知識(shí)。具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02
JavaScript圖片的Base64編碼以及轉(zhuǎn)換詳解
現(xiàn)在網(wǎng)站為了提升用戶的瀏覽體驗(yàn)越來越多的使用了圖片,而這些圖片通常以 Base64 的形式存儲(chǔ)和加載,下面這篇文章主要給大家介紹了關(guān)于JavaScript圖片的Base64編碼以及轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下2022-07-07
BootStrap 動(dòng)態(tài)添加驗(yàn)證項(xiàng)和取消驗(yàn)證項(xiàng)的實(shí)現(xiàn)方法
這篇文章主要介紹了BootStrap 動(dòng)態(tài)添加驗(yàn)證項(xiàng)和取消驗(yàn)證項(xiàng)的實(shí)現(xiàn)方法的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
微信小程序比較兩個(gè)數(shù)大小的實(shí)現(xiàn)方法
最近在工作中遇到一個(gè)需求,可以自動(dòng)對(duì)比兩個(gè)數(shù)的大小,下面這篇文章主要給大家介紹了關(guān)于微信小程序比較兩個(gè)數(shù)大小的實(shí)現(xiàn)方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03

