javasrcipt——正則

來源:互聯網
上載者:User
使用正則

var  regString=new RegExp("string");

預設正則匹配第一個出現的字串,如果想全域匹配需要加參數“g”

var  regString=new RegExp("string","g");

同時,正則預設是區分大小寫如果想不區分大小寫需要參數“i”

var  regString=new RegExp("string","gi");

也可以使用perl風格的正則如下

var  regString=/string/gi;

 

正則的函數和參數

 

var sm="a bat, a Cat, a fAt baT,a faT cat";
var par=/at/gi;
alert(sm.search(par));output: 3

 

exex()方法有一個字串參數,返回一個數組,數組中的第一個條目是第一個匹配,其他是反向引用
var s=par.exec(sm);
alert(s);output :at

String對象的match()方法會返回包含字串的所有匹配數組,這個方法調用string對象,同時傳給RegExp對象
var matchs=sm.match(par);alert(matchs);output:at,at,At,aT,at

 

 

擴充字元串方法


var par2=/at/g;
var sp=sm.replace(par2,"%");
alert(sp);output:a b%,a C%,a fAt baT,a faT c%

replace(old,new)使用第二個參數替換第一個參數

var spl=sm.split(",");
alert(spl);

//標誌(參數)
//i 不區分大小寫匹配
//g 全域匹配,找到所有匹配,而不是找到第一個匹配後停止
//m 多行匹配,這時 ^ 匹配字串開頭和每一行的開頭,$ 匹配每一行的結尾和字串結尾

 元字元

([{\^$|)*?+.

使用元字元必須使用\進行轉義

//支援Regex的 String 對象的方法

search() 方法用於檢索字串中指定的子字串,或檢索與Regex相匹配的子字串。找到匹配則返回字串的起始位置,否則返回-1

match() 方法可在字串內檢索指定的值,或找到一個或多個Regex的匹配。找到則返回匹配結果的數組。該數組的內容依賴於 regexp 是否具有全域標誌 g。

replace() 方法用於在字串中用一些字元替換另一些字元,或替換一個與Regex匹配的子串。該方法返回一個新的字串。

split() 方法用於把一個字串分割成字串數組。該方法返回一個新的字串。String.split() 執行的操作與 Array.join執行的操作是相反的。

 

/n 換行
/r 斷行符號
/t 定位字元
/v 垂直定位字元
/f 換頁符
[……]
[^……]
/s 任何空白符
/w 任何ACSII單字元,等同於[a-zA-Z0-9_]
/d 任何單個數字,等同於[0-9]

/S 任何非空白符
/W 任何非ACSII單字元,等同於[^a-zA-Z0-9_]
/D 任何非單個數字,等同於[^0-9]

^ 匹配字串頭部
$ 匹配字串尾部
. 除換行和終止符之外的任一字元
? 0次或1次
+ 1次或多次
* 0次或多次
{n} n次
{n,m} 至少n次,但不多於m次
{n,} n到無窮次

非窮盡重複[在重複字元後加?]
??
+?
*?
{n,m}?

選擇 |
分組 ()
只組合(?:……)
引用 \n 必須和分組聯合使用,按分組順序(從左至右)

 

RegExp 對象屬性

屬性
global g
ignoreCase i 
multiline m
source /[ab]/i =>[ab]
lastIndex

方法

exec() 和match()全域模式相同,返回匹配數組,否則返回null 
test() 返回true和false,等價於調用exec()。

compile() 方法用於在指令碼執行過程中編譯Regex。也可用於改變和重新編譯Regex。

 

###############

{

var reTest=/[ba]/i;
alert(reTest.global);
alert(reTest.ignorCase);
alert(reTest.multiline);
alert(reTest.source);

}

{

var sToMatch="bbq is short for barbecue";
var par=/b/g;
par.exec(sToMatch);
alert(par.lastIndex);
par.exec(sToMatch);
alert(par.lastIndex);
par.exec(sToMatch);
alert(par.lastIndex);

}
{compile()
var str="Every man in the world! Every woman on earth!";
patt=/man/g;str2=str.replace(patt,"person");document.write(str2+"<br />");patt=/(wo)?man/g;  重新編譯了pattpatt.compile(patt);str2=str.replace(patt,"person");document.write(str2);
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.