a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Regex > 正文

正確使用帶有"g"標記的javascript正則表達式

2020-03-16 21:16:53
字體:
來源:轉載
供稿:網友
javascript正則表達式是對字符串執行模式匹配的強大工具。正確使用它會給我們的工作帶來很大的便利??墒怯行┑胤接捎谖覀儧]有太注意或者根本不理解,就會遇到不可預料的麻煩。
 
 
下面我們要談談帶有"g" 標記的正則表達式的使用問題,首先讓我們看一段代碼,從例子入手更容易理解。 
復制代碼代碼如下:

1 function a(val) 
2 { 
3 var re = /^/d+$/g; 
4 alert(re.lastIndex); 
5 return re.test(val); 
6 } 
7 alert(a(5)); 
8 alert(a(6)); 

運行上述代碼,在不同瀏覽器中會得到不同結果,IE中:0 true 0 true,FF和Chrome中:0 true 1 false,看到這里,想必會有人一頭霧水,感到詫異。針對這個問題,就我目前查閱資料,找到了兩種方法。 

1、使用match 

復制代碼代碼如下:

1 function a(val) 


3 { 

5 var re = /^/d+$/g; 

7 if((""+val).match(re)) 

9 return true; 
10 
11 else 
12 
13 return false; 
14 
15 } 
16 
17 alert(a(5)); 
18 
19 alert(a(6)); 

注:要使用""+val把val轉化為字符串,關于match的具體使用方法可參考這里 

2、使用不帶"g" 的正則表達式(var re=/^/d+$/或var re=new RegExp("^[0-9]+$")) 


復制代碼代碼如下:

1 function a(val) 

3 { 

5 var re = new RegExp("^[0-9]+$");//或者var re=/^/d+$/; 

7 return re.test(val); 

9 } 
10 
11 alert(a(5)); 
12 
13 alert(a(6)); 
14 
15 


注:var re = new RegExp("^[0-9]+$")中只能用[0-9],不能用/d,至于為什么,我不很明白,希望哪位知道的給講講。 

不難看出,上面兩種方法是從側面考慮怎么解決問題 的,沒有從正面解決,接下來我們從問題出現的本質上分析一下,并給出解決方法。 

要從問題出現的本質考慮,我們就不得不從"g" 標記說起,帶有"g"標記的正則表達式有一個屬性lastIndex,該屬性存放一個整數,它聲明的是上一次匹配文本之后的第一個字符的位置。上次匹配的結果是由方法 RegExp.exec() 和 RegExp.test() 找到的,它們都以 lastIndex 屬性所指的位置作為下次檢索的起始點。這樣,就可以通過反復調用這兩個方法來遍歷一個字符串中的所有匹配文本。該屬性是可讀可寫的。只要目標字符串的下一次搜索開始,就可以對它進行設置。當方法 exec() 或 test() 再也找不到可以匹配的文本時,它們會自動把 lastIndex 屬性重置為 0。看到這里我們不難看出問題出現的原因和解決方法了,只要我們在下次搜索之前把lastIndex屬性重置為0即可,如下: 


復制代碼代碼如下:

1 function a(val) 

3 { 

5 var re = /^/d+$/g; 

7 re.lastIndex=0;//重置lastIndex為0 

9 return re.test(val); 
10 
11 } 
12 
13 alert(a(5)); 
14 
15 alert(a(6)); 


關于lastIndex的更多解釋請看這里 

至此我們已經明白問題出現的本質,以及如何較好的解決這樣的問題,希望本文對一些人有幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 综合亚洲色图 | 在线观看免费毛片视频 | 欧美性视频网站 | 国产成人精品a视频一区 | 天天草天天色 | 日韩欧美国产网站 | 午夜精品视频 | 精品国产不卡一区二区三区 | 成人欧美一区二区 | 国产精品久久九九 | 国产精品久久久久久亚洲调教 | 欧美日韩福利 | 日本黄色影片在线观看 | 亚洲一区二区三区免费视频 | 狠狠操狠狠操 | 欧美一区2区三区4区公司二百 | 先锋影音在线 | 色呦呦入口 | 亚洲国产免费看 | 噜噜噜噜狠狠狠7777视频 | 久久精品8 | 91精品国产91久久久久久蜜臀 | 视频国产在线 | 国产精品久久久久久久久久妞妞 | 成人av网站在线 | 日本一本视频 | 在线第一页 | 午夜一区二区在线观看 | 中文字幕免费看 | 曰本少妇色xxxxx日本妇 | 一区二区视频在线 | 久热精品在线 | 在线观看免费毛片视频 | 日韩福利 | 在线免费观看黄色小视频 | 亚洲欧洲一区二区 | 日韩欧美视频在线 | 久久综合狠狠综合久久综合88 | 亚洲综合婷婷 | 久久久久久久国产精品 | 国产女人免费看a级丨片 |