js正則表達(dá)式中test,exec,match方法的區(qū)別說(shuō)明
js正則表達(dá)式中test,exec,match方法的區(qū)別說(shuō)明
test
test 返回 Boolean,查找對(duì)應(yīng)的字符串中是否存在模式。
var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(reg.test(str)); // true
exec
exec 查找并返回當(dāng)前的匹配結(jié)果,并以數(shù)組的形式返回。
var str = "1a1b1c";
var reg = new RegExp("1.", "");
var arr = reg.exec(str);
如果不存在模式,則 arr 為 null,否則 arr 總是一個(gè)長(zhǎng)度為 1 的數(shù)組,其值就是當(dāng)前匹配項(xiàng)。arr 還有三個(gè)屬性:index 當(dāng)前匹配項(xiàng)的位置;lastIndex 當(dāng)前匹配項(xiàng)結(jié)束的位置(index + 當(dāng)前匹配項(xiàng)的長(zhǎng)度);input 如上示例中 input 就是 str。
exec 方法受參數(shù) g 的影響。若指定了 g,則下次調(diào)用 exec 時(shí),會(huì)從上個(gè)匹配的 lastIndex 開(kāi)始查找。
var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(reg.exec(str)[0]);
alert(reg.exec(str)[0]);
上述兩個(gè)輸出都是 1a?,F(xiàn)在再看看指定參數(shù) g:
var str = "1a1b1c";
var reg = new RegExp("1.", "g");
alert(reg.exec(str)[0]);
alert(reg.exec(str)[0]);
上述第一個(gè)輸出 1a,第二個(gè)輸出 1b。
match
match 是 String 對(duì)象的一個(gè)方法。
var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(str.match(reg));
match 這個(gè)方法有點(diǎn)像 exec,但:exec 是 RegExp 對(duì)象的方法;math 是 String 對(duì)象的方法。二者還有一個(gè)不同點(diǎn),就是對(duì)參數(shù) g 的解釋。
如果指定了參數(shù) g,那么 match 一次返回所有的結(jié)果。
var str = "1a1b1c";
var reg = new RegExp("1.", "g");
alert(str.match(reg));
//alert(str.match(reg)); // 此句同上句的結(jié)果是一樣的
此結(jié)果為一個(gè)數(shù)組,有三個(gè)元素,分別是:1a、1b、1c。
JavaScript中經(jīng)常用到正則表達(dá)式, 而正則表達(dá)式中經(jīng)常用到Match和Test這兩個(gè)函數(shù),當(dāng)然還有Exec. 這里以代碼實(shí)例來(lái)區(qū)分它們之間的不同吧.
Match Example
var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
var regexp = /[A-E]/gi;
var rs = str.match(regexp);
//rs= Array('A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e');
Test Example
var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
var regexp = /[A-E]/gi;
var rs = regexp.test(str);
// rs = true; boolean
Exc Example
var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
var regexp = /[A-E]/gi;
var rs;
while ((rs = regexp.exec(str)) != null)
{
document.write(rs);
document.write(regexp.lastIndex);
document.write("<br />");
}
OUTPUT
---------------------------------
A 1
B 2
C 3
D 4
E 5
a 27
b 28
c 29
d 30
e 31
Another Exc Example
var regexp = /ab*/g;
var str = "abbcdefabh";
var rs;
while ((rs = regexp.exec(str)) != null)
{
document.write(rs);
document.write(regexp.lastIndex);
document.write("<br />");
}
OUTPUT
---------------------------------
abb 3
ab 9
- 正則表達(dá)式中test、exec、match的區(qū)別介紹及括號(hào)的用法
- JavaScript正則表達(dá)式小結(jié)(test|match|search|replace|split|exec)
- 簡(jiǎn)述JavaScript的正則表達(dá)式中test()方法的使用
- js正則表達(dá)式test()和exec()用法實(shí)例
- 正則表達(dá)式中特殊符號(hào)及正則表達(dá)式的幾種方法總結(jié)(replace,test,search)
- js 正則表達(dá)式之test函數(shù)講解
- 深入理解正則表達(dá)式中的?test?和?/[^A-Za-z0-9]/??(推薦)
相關(guān)文章
Javascript實(shí)現(xiàn)帶關(guān)閉按鈕的網(wǎng)頁(yè)漂浮廣告代碼
帶有關(guān)閉功能的漂浮圖片的實(shí)現(xiàn)方法有很多,下面為大家介紹下使用Javascript是如何實(shí)現(xiàn)的,喜歡的額朋友可以了解下2014-01-01
詳解webpack 打包文件體積過(guò)大解決方案(code splitting)
這篇文章主要介紹了webpack 打包文件體積過(guò)大解決方案(code splitting),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
使用SpreadJS快速清除Excel中工作表保護(hù)密碼
這篇文章主要為大家介紹了使用SpreadJS快速清除Excel中工作表保護(hù)密碼方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
js+css使DIV始終居于屏幕中間 左下 左上 右上 右下的代碼集合
js+css使DIV始終居于屏幕中間 左下 左上 右上 右下的代碼集合,需要的朋友可以參考下。2011-03-03
使用JavaScript實(shí)現(xiàn)一個(gè)簡(jiǎn)單的哈希映射功能
哈希表大家應(yīng)該都經(jīng)常用到吧,那么大家有沒(méi)有想過(guò)哈希表是怎么實(shí)現(xiàn)的呢,本文我們就來(lái)從一道簡(jiǎn)單的題目來(lái)了解一下哈希表的簡(jiǎn)單原理和實(shí)現(xiàn)吧2024-02-02
javascript 拷貝節(jié)點(diǎn)cloneNode()使用介紹
這篇文章主要介紹了javascript 節(jié)點(diǎn)操作拷貝節(jié)點(diǎn)cloneNode()的使用,需要的朋友可以參考下2014-04-04
Javascript中產(chǎn)生固定結(jié)果的函數(shù)優(yōu)化技巧
分享一個(gè)Javascript編寫函數(shù)的優(yōu)化技巧;適用的函數(shù)應(yīng)該要滿足以下條件;產(chǎn)生固定結(jié)果;復(fù)雜或較耗時(shí)等等,感興趣的朋友可以了解下2013-01-01

