成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript標(biāo)準(zhǔn)庫系列——RegExp對(duì)象(三)

邱勇 / 1598人閱讀

摘要:目錄導(dǎo)語理解正則表達(dá)式模式的規(guī)則字符串和正則實(shí)例的屬性和方法檢索實(shí)例小結(jié)導(dǎo)語正則表達(dá)式是處理字符串的一門藝術(shù)手法,應(yīng)用場(chǎng)景經(jīng)常出現(xiàn)在表單驗(yàn)證部分高級(jí)程序設(shè)計(jì)一書開篇提到,這門語言最原始的應(yīng)用就是處理輸入驗(yàn)證操作,所以正則表達(dá)式從誕生那一刻就

目錄 導(dǎo)語 1.理解正則表達(dá)式 2.模式的規(guī)則 3.字符串和正則實(shí)例的屬性和方法 4.檢索實(shí)例 5. 小結(jié) 導(dǎo)語

正則表達(dá)式是處理字符串的一門藝術(shù)手法,應(yīng)用場(chǎng)景經(jīng)常出現(xiàn)在表單驗(yàn)證部分;
JavaScript高級(jí)程序設(shè)計(jì)一書開篇提到,JavaScript這門語言最原始的應(yīng)用就是處理輸入驗(yàn)證操作,所以正則表達(dá)式從JavaScript誕生那一刻就與其結(jié)下不解之緣;

1.理解正則表達(dá)式

正則表達(dá)式(Regular Expression)可以理解為規(guī)則表達(dá)式,即以表達(dá)式的形式定義一項(xiàng)規(guī)則,然后根據(jù)這一規(guī)則去檢索字符串,最后根據(jù)匹配結(jié)果進(jìn)行后續(xù)的處理操作(判斷、獲取或是替換等);
正則表達(dá)式根據(jù)創(chuàng)建形式的不同,可分為字面量和構(gòu)造函數(shù)RegExp對(duì)象;
1.1 字面量方法
正則表達(dá)式的字面量方法由正則模式(pattern)和修飾符(flags)構(gòu)成;

var regExp = /pattern/flags;

1.2 RegExp構(gòu)造函數(shù)
可以通過RegExp這一構(gòu)造函數(shù)去創(chuàng)建一個(gè)正則表達(dá)式對(duì)象;

var regExp  = new RegExp("pattern","flags")

需要注意的二者不同在于:字面量采用/pattern/,而正則對(duì)象采用"pattern"字符串;所以出現(xiàn)轉(zhuǎn)義字符時(shí),構(gòu)造函數(shù)創(chuàng)建的正則對(duì)象的參數(shù)需要進(jìn)行轉(zhuǎn)義;

var regExp = /hello/;
var regExp1 = new RegExp("hello");

1.3 flags規(guī)則
模式的規(guī)則將會(huì)在下文多帶帶開一章講解,先講述flags規(guī)則;
正則表達(dá)式可以添加3個(gè)修飾符從而起到改變檢索規(guī)則的作用;

g:表示全局模式,檢索所有字符串,而不是發(fā)現(xiàn)第一個(gè)匹配項(xiàng)時(shí)停止檢索;
i:表示忽略大小寫模式;

m:表示多行模式,進(jìn)行多行的檢索;

2. 模式的規(guī)則

模式的規(guī)則是正則表達(dá)式的核心部分,模式可有普通字符(打印字符和非打印字符)和特殊字符構(gòu)成;

2.1 普通字符
普通字符由所有數(shù)字、中外文字母、標(biāo)點(diǎn)符號(hào)和非打印字符構(gòu)成;
非打印字符包括:

cx:control-x

:換行符;

:回車符;
	:制表符;
v:垂直制表符;
f:換頁符;
s:空白字符,等價(jià)于[f

	v]

2.2 特殊字符
所謂特殊字符,就是具有特殊含義的字符,包括:限定符、定位符、類型符、分組符、條件符、非獲取匹配符等

限定符
限定符限定一個(gè)正則表達(dá)式出現(xiàn)次數(shù);

*:匹配前面子表達(dá)式任意次,等價(jià)于{0,};
+:匹配前面子表達(dá)式1次以上,等價(jià)于{1,};
?:匹配前面子表達(dá)式0次或1次,等價(jià)于{0,1};
{n}:匹配子表達(dá)式n次;
{n,}:匹配子表達(dá)式n次以上;
{n,m}:匹配子表達(dá)式n~m次之間,默認(rèn)是貪婪模式取m次,當(dāng)在該限定符后面添加?開啟非貪婪模式;這個(gè)?可應(yīng)用于所有限定符后;

定位符
定位符能夠高效匹配到字符出現(xiàn)位置;

^:匹配字符串開始的位置,注意在[]中表示取反匹配;
$:匹配字符串結(jié)尾的位置;
:匹配字符邊界;

類型符
類型符是小羊自己為了記憶方便定義的,就是可以匹配不同的數(shù)據(jù)類型;

.:匹配除換行符的任意字符;
w:匹配任何單詞字符,等價(jià)于[a-zA-z0-9];
d:匹配數(shù)字;

分組符

():將表達(dá)式放入圓括號(hào)成為子表達(dá)式;

條件符

|:分支條件,匹配位于|兩側(cè)的字表達(dá),相當(dāng)于或;

非獲取匹配符
非獲取匹配符指的是匹配表達(dá)式但不獲取匹配結(jié)果;

(?:pattern):匹配 pattern 但不獲取匹配結(jié)果;
(?=pattern):正向預(yù)查,在任何匹配 pattern 的字符串開始處匹配查找字符串;
(?!pattern):負(fù)向預(yù)查,在任何不匹配 pattern 的字符串開始處匹配查找字符串

取反操作
下面這幾個(gè)都是對(duì)應(yīng)先前特殊字符的取反操作;

D
W
B
S
[^pattern]

反向引用
對(duì)一個(gè)正則表達(dá)式模式或部分模式兩邊添加圓括號(hào)將導(dǎo)致相關(guān)匹配存儲(chǔ)到一個(gè)臨時(shí)緩沖區(qū)中,所捕獲的每個(gè)子匹配都按照在正則表達(dá)式模式中從左到右出現(xiàn)的順序存儲(chǔ)。緩沖區(qū)編號(hào)從 1 開始,最多可存儲(chǔ) 99 個(gè)捕獲的子表達(dá)式;

Is is the cost of of gasoline going up up?
/([a-z]+) 1/gi
匹配Is is和up  up
3.字符串和正則實(shí)例的屬性和方法

3.1 字符串的方法

match:接受正則表達(dá)式,返回匹配結(jié)果;

replace:接受兩個(gè)參數(shù),第一個(gè)為正則,第二個(gè)為替換值(也可以是一個(gè)函數(shù)),返回新字符串,不改變?cè)址?/p>

3.2 正則實(shí)例的屬性和方法
正則實(shí)例的屬性
正則實(shí)例的屬性主要包括ignoreCase、global、multiline返回是否設(shè)置修飾符的布爾值,lastIndex返回下一次開始搜索的位置,source返回正則表達(dá)式的字符串形式;


正則實(shí)例的屬性

test:傳入一個(gè)字符串,返回布爾值表示匹配結(jié)果的判斷;帶有修飾符g時(shí),每一次test方法都從上一次結(jié)束的位置開始向后匹配;

exec:傳入一個(gè)字符串,返回匹配結(jié)果的數(shù)組;

3.檢索實(shí)例

下面根據(jù)目前常用的表單驗(yàn)證時(shí)用到的正則,給出幾個(gè)檢索的案例;解;
3.1 手機(jī)號(hào)碼檢索

function isPhoneNum(str){
                //020-80723000
                //07518869865
                //13832132341
                var regExp = /^0d{2}[-]?d{8}|^0d{3}[-]?d{7}|^1d{10}/
                return regExp.test(str);
            };

3.2 E-mail檢索

    function isEmail(str){
                var regExp =  /^[a-zA-Z]w*@[0-9a-zA-Z]+.[a-zA-Z]+/;
                return regExp.test(str)
            };

3.3 密碼檢索

            function isValidPassword(str){
                //長度6-20個(gè)字符,包括大寫字母、小寫字母、數(shù)字、下劃線至少兩種
                if(/W*/.test(str)){
                    return false
                }else if(/w{0,5}|w{21,}/.test(str)){
                    return false;
                }else if(/^d+$|^[a-zA-Z]$|^_+$/.test(str)){
                    return false
                }else{
                    return true;
                }
            }

3.4 用戶名的檢索

            function isValidUsername(str){
                //長度為6-20個(gè)字符,只能包括字母數(shù)字和下劃線
                var regExp = /^w{6,20}$/
                return regExp.test(str);
            };

3. 5 Url檢索

https://www.baidu.com:8080/index.html#q=hello

https://   ([a-zA-Z]*://)?
www.baidu.com   S+
:8080   (:d*)?
/   /
index.html   S*
#q=hello   (#.*)?
5. 小結(jié)

通過本文,我們可以了解到:

正則表達(dá)式可以理解為根據(jù)規(guī)定的規(guī)則,去檢索字符串然后根據(jù)匹配結(jié)果進(jìn)行后續(xù)的處理,處理可以包括判斷、獲取和替換;

正則表達(dá)式的創(chuàng)建方法可以使用字面量和構(gòu)造函數(shù)形式;兩種方法都是由正則模式和修飾符構(gòu)成,不同之處在于構(gòu)造函數(shù)需要以字符串形式傳參;

修飾符規(guī)則部分可以傳遞三個(gè)參數(shù),分別為g、im,可以起到改變檢索規(guī)則的作用;

模式規(guī)則作為正則表達(dá)式,由普通字符和特殊字符構(gòu)成;

普通字符包括打印字符和非打印字符;

特殊字符即那些具有特殊含義的字符,主要包括限定符、定位符、類型符、分組符、分組符條件符、非獲取匹配符等;

正則表達(dá)式以實(shí)例形式出現(xiàn)時(shí),擁有自己的屬性和方法,并且字符串的一些方法與正則表達(dá)式也存在密切的關(guān)系;

字符串的方法包括:matchreplace方法;

正則實(shí)例的屬性和方法包括:ignonreCase、global、multiline、testexec等;

最后給出了幾個(gè)正則表達(dá)式的應(yīng)用實(shí)例,包括手機(jī)號(hào)碼、密碼、用戶名、E-mail和URL檢索;

參考資料

《JavaScript高級(jí)程序設(shè)計(jì)(第3版)》

《JavaScript標(biāo)準(zhǔn)參考教程》——阮一峰

饑人谷課件

正則表達(dá)式30分鐘入門教程

菜鳥教程

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/86742.html

相關(guān)文章

  • JavaScript標(biāo)準(zhǔn)系列——大包裝對(duì)象(四)

    摘要:目錄導(dǎo)語包裝對(duì)象的理解三大包裝對(duì)象的知識(shí)點(diǎn)小結(jié)導(dǎo)語包裝對(duì)象是為了彌補(bǔ)基本數(shù)據(jù)類型的非對(duì)象特性而產(chǎn)生的,對(duì)于基本類型值而言,本來是不存在屬性和方法的,但是我們可以在使用字面量創(chuàng)建字符串時(shí),調(diào)用例如的方法,那么其內(nèi)在原理究竟是什么呢閱讀完本篇文 目錄 導(dǎo)語 1. 包裝對(duì)象的理解 2. 三大包裝對(duì)象的知識(shí)點(diǎn) 3. 小結(jié) 導(dǎo)語 包裝對(duì)象是為了彌補(bǔ)基本數(shù)據(jù)類型的非對(duì)象特性而產(chǎn)生的,對(duì)于基本類型...

    sean 評(píng)論0 收藏0
  • 前端資源系列(4)-前端學(xué)習(xí)資源分享&前端面試資源匯總

    摘要:特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 本以為自己收藏的站點(diǎn)多,可以很快搞定,沒想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補(bǔ)充。有錯(cuò)誤的地方,還請(qǐng)斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會(huì)及時(shí)更新,平時(shí)業(yè)務(wù)工作時(shí)也會(huì)不定期更...

    princekin 評(píng)論0 收藏0
  • 怪異的JavaScript系列()

    摘要:本文的思想源自于在上的演講。我收集這些例子的主要目的是將它們整理并清楚理解它們的原理。著主要是因?yàn)榇罄ㄌ?hào)也是函數(shù)定義語法的一部分。自從年雙十一正式上線,累計(jì)處理了億錯(cuò)誤事件,得到了金山軟件等眾多知名用戶的認(rèn)可。 譯者按: JavaScript有很多坑,經(jīng)常一不小心就要寫bug。 原文: What the f*ck JavaScript? 譯者: Fundebug 為了保證可讀性...

    XboxYan 評(píng)論0 收藏0
  • JavaScript進(jìn)階學(xué)習(xí)(一)—— 基于正則表達(dá)式的簡(jiǎn)單js模板引擎實(shí)現(xiàn)

    摘要:基本語法構(gòu)造函數(shù)可創(chuàng)建一個(gè)正則表達(dá)式對(duì)象,用特定的模式匹配文本。要表示字符串,字面量形式不使用引號(hào),而傳遞給構(gòu)造函數(shù)的參數(shù)使用引號(hào)。當(dāng)使用構(gòu)造函數(shù)創(chuàng)造正則對(duì)象時(shí),需要常規(guī)的字符轉(zhuǎn)義規(guī)則在前面加反斜杠。結(jié)果替換與正則表達(dá)式匹配的子串。 文章來源:小青年原創(chuàng)發(fā)布時(shí)間:2016-06-26關(guān)鍵詞:JavaScript,正則表達(dá)式,js模板引擎轉(zhuǎn)載需標(biāo)注本文原始地址: http://zhaom...

    Magicer 評(píng)論0 收藏0
  • 聊聊 JavaScript 中的 Date 對(duì)象

    摘要:一起來看看中的日期對(duì)象。對(duì)象和其他對(duì)象如等一樣,對(duì)象是語言中的內(nèi)建對(duì)象。在工作中,對(duì)象有著許多重要的應(yīng)用。這意味著,當(dāng)前時(shí)間與標(biāo)準(zhǔn)時(shí)區(qū)相差小時(shí)。,全稱是國際標(biāo)準(zhǔn)化組織,負(fù)責(zé)制定全世界工商業(yè)國際標(biāo)準(zhǔn)的國際標(biāo)準(zhǔn)。 原文地址: http://www.wemlion.com/2016/d... 時(shí)間的發(fā)現(xiàn) 日常生活中,各種形式的時(shí)間字符到處都是。 時(shí)間觀念的產(chǎn)生,時(shí)間單位、計(jì)時(shí)工具的發(fā)明,給人...

    adie 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<