javascript
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:正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Vegas原创】终端服务器超出了最大允
- 下一篇: [MySql] MySQL的点点滴滴