日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

JavaScript高级程序设计学习笔记6:正则表达式

發布時間:2024/8/22 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript高级程序设计学习笔记6:正则表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、正則表達式通過RegExp類實現,RegExp對象的構造函數可以帶一個或兩個參數。第一個參數(或只有一個參數)是描述需要進行匹配的模式字符串,如果還有第二個參數,這個參數則指定了額外的處理指令。

定義正則表達式:
1、只匹配字符串中出現的第一個單詞"cat";區分大小寫
var reCat = new RegExp("cat");?
2、匹配字符串中出現的全部"cat",而不是在找到第一個匹配后就停止;忽略大小寫
var reCat = new RegExp("cat","gi");

也可以使用Perl風格的語法:
var reCat = /cat/gi;


二、創建一個RegExp對象后,把它應用到字符串上。RegExp和String的一些方法都可使用。

1、RegExp有個test()方法,如果給定字符串匹配這個模式,它就返回ture,否則返回false。

??? var sToMatch = "a fat cat";
??? var reCat = /at/;???
??? alert(reCat.test(sToMatch));?? //true


2、String對象的match()方法返回一個包含在字符串中的所有匹配的數組

??? var sToMatch = "a bat, a Cat, a fAt baT, a faT cat";
??? var reAt = /at/gi;
??? alert(sToMatch.match(reAt));? //at,at,At,aT,at,
???
3、String對象的search()方法返回在字符串出現的第一個匹配的位置,全局匹配正則表達式(帶參數g)在使用search()時不起作用

??? var sToMatch = "a bat, a Cat, a fAt baT, a faT cat";
??? var reAt = /at/gi;
??? alert(sToMatch.search(reAt));? //3

4、擴展的字符串方法,replace()可以用用另一個字符串(第二個參數)來替換某個子串(第一個參數)的所有匹配。可以給第一個參數傳遞一個正則表達式

??? var sToChange = "a bat, a Cat, a fAt baT, a faT cat";
??? var reAt = /at/gi;
??? alert(sToChange.replace(reAt, "dog")); //a bdog, a Cdog, a fdog bdog, a fdog cdog


三、字符類是用于測試的字符的組合。通過將一些字符放入方括號[]中,可以去匹配第一個字符、第二個字符等等。
1、簡單類,匹配方括號中的字符

? ??? var sToMatch = "a bat, a Cat, a fAt baT, a faT cat";
??? var reAt = /[ab]at/gi;
??? alert(sToMatch.match(reAt));

2、負向類,匹配方括號中除了^后面的字符

??? var sToMatch = "a bat, a Cat, a fAt baT, a faT cat";
??? var reAt = /[^ab]at/gi;
??? alert(sToMatch.match(reAt));? //Cat,fAt,faT,cat
3、范圍類,匹配方括號中用橫線“-”連起來的從什么到什么

??? var sToMatch = "a bat, a Cat, a fAt baT, a faT cat";
??? var reAt = /[a-c]at/gi;
??? alert(sToMatch.match(reAt));? //bat,Cat,baT,cat
4、組合類,由幾種其它的類組合而成的字符類

??? var sToMatch = "a bat, a Cat, a fAt baT, a faT cat,123at";
??? var reAt = /[a-c1-3]at/gi;
??? alert(sToMatch.match(reAt));? //bat,Cat,baT,cat,3at
5、預定義頁,由于某些模式會反復用到,所以用一組預定義類可以更方便地指定復雜類

??? 代碼??? ??? 等同于??? ??? 匹配
??? .??? ??? [^\n\r]??? ??? 除了換行和回車之外的任意字符
??? \d??? ??? [0-9]??? ??? 數字
??? \D??? ??? [^0-9]??? ??? 非數字字符
??? \s??? ??? [\t\n\x0B\f\r]? 空白字符
??? \S??? ??? [^\t\n\x0B\f\r]??? 非空白字符
??? \w??? ??? [a-zA-Z_0-9] ??? 單詞字符(所有的字母、所有的數字和下劃線)
??? \W??? ??? [a-zA-Z_0-9] ??? 非單詞字符??? ??? ??? ??? ??? ???

??? ??? ???

四、量詞,可以指定某個特定模式出現的次數。

??? 代碼??? ??? 描述
??? ???? ??? 出現零次或一次
??? *??? ??? 出現零次或多次(任意次)
??? +??? ??? 出現一次或多次(至少出現一次)
??? {n}??? ??? 一定出現n次
??? {n,m}??? ??? 至少出現n次但不超過m次
??? {n,}??? ??? 至少出現n次
??? ???
五、分組,通過用一系列括號包圍一系列字符、字符類以及量詞來使用。

??? var sToMatch = "123123abcabcabc";
??? var re = /(123){2}(abc)?/gi;
??? alert(sToMatch.match(re));?? //123123abc

例子:

var str = "123<div>456</div>789";
str = str.replace(/<div[\s\S]*?<\/div>/, ""); //去掉div及其中內容,結果123789

轉載于:https://www.cnblogs.com/gdjlc/archive/2010/02/10/2086915.html

總結

以上是生活随笔為你收集整理的JavaScript高级程序设计学习笔记6:正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。