1. 程式人生 > >正則表示式有無g引數(全域性搜尋)時,test()結果的差異

正則表示式有無g引數(全域性搜尋)時,test()結果的差異

有g引數的正則表示式: var kk=//w/w/g;
var kk=new RegExp("//w//w","g");
如果正則表示式有指定g引數全域性匹配 , 則每次test()是依次獲得下一個匹配。舉例說明:
var s="AABBCC";
var kk=/(/w/w)/g;
for(i=0;i<8;i++){
    document.write ("<br>"+kk.test(s));
} 上面的程式碼結果是3個true,1個false,再3個true,再1個false。
true
true

true
false
第1次test匹配AA,第2次test匹配BB,第3次test匹配CC,第4次test找不到匹配,之後又從頭重新開始:
第5次同第1次,第6次同第2次,┄┄。

所以會出現test有時候true,有時候false的情況。這裡的正則表示式必須是指定了g引數的

利用這一特點,可以用while迴圈遍歷所有正則匹配:
var s="AA_123_BB_456_CC";
var kk=/((/w)/2)/g;
while(kk.test(s)){
document.write ("<br>"+RegExp.$1);
}
得到結果: AA
BB

CC

如果正則表示式沒有g引數,則每次test都是從頭開始匹配,不存在上述問題。
沒有g引數的正則表示式: var kk=//w/w/;
var kk=new RegExp(//w//w); 測試:
var s="AABBCC";
var kk=/(/w/w)/;
for(i=0;i<8;i++){
    document.write ("<br>"
+kk.test(s));
} 上面的程式碼結果是8個true,每次都是AA匹配。 true
true

true
true

相關推薦

表示式g引數全域性搜尋test()結果差異

有g引數的正則表示式: var kk=//w/w/g;var kk=new RegExp("//w//w","g"); 如果正則表示式有指定g引數全域性匹配 , 則每次test()是依次獲得下一個匹配。舉例說明: var s="AABBCC";var kk=/(/w/w)

python表示式捕獲分組取消分組

在正則中,分組有重要的作用,但有時候,我們並不想要分組。比如,給定一系列的地址字串,要找出省份名稱。如:‘江蘇省蘇州市虎丘區馬澗路靠近白馬澗花園‘, ’廣西壯族自治區玉林市容縣’等。 程式碼如下: import re pattern_0 = re.co

表示式慎重用g引數

var pat5 =/^[0-9a-zA-Z._-]+[@][0-9a-zA-Z_-]+[.]([a-zA-Z]){1}$/; inputs[4].onblur=function(){ if(pat5.test(this.value)){ spans[4].innerHTML

Python3 表示式特殊符號及用法詳細列表

廢話 有一個美式笑話:我有一個難題,可以用正則表示式解決,那麼,現在我有兩個難題。 美式笑話確實有點冷,只有學過正則表示式的人才能讀懂這個段子。 下面列舉了Python3的所有符號用法,別背,千萬

javascript表示式之最長匹配貪婪匹配和最短匹配懶惰匹配

最近在閱讀RequireJS 2.1.15原始碼,原始碼開始處定義了一系列的變數,有4個正則表示式: var commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)

javascript表示式的3個引數g,i,m

用於測試的網站: 用於測試的字串為: bsdfefsdf aaa dfsdfa aaa g  :全域性查詢模式 不加g的時候只會匹配1個,加g後找出所有的匹配 正則表示式: /aaa/結果匹配為: bsdfefsdf aaa dfsdfaaaa 正則表示式:/aaa/

js利用表示式獲取 / 設定URL引數

function getUrlParam(url, key) {      var reg = new RegExp("[?&]" + key + "=([^&]+)", "gmi");      if (reg.test(

Word中使用表示式進行查詢和替換高效進行文書處理

術語 開始前,我們先定義一對術語: 萬用字元指的是您可以用來代表一個或多個字元的鍵盤字元。例如,星號 (*) 通常代表一個或多個字元,問號 (?) 通常代表單個字元。 對我們來說,正則表示式指的是您可以用來查詢和替換文字模式的文字字元和萬用字元組合。文字字元指的是必須存在於目標文

notepad++ 表示式 高階查詢替換技巧

正則表示式:(^\w+$) 替換式:db2 \"delete from \1 \" \r\ndb2 \"import from \.\/data\/\1\.ixf of ixf modified by identityignore insert into \1 \" 輸入

java 手機號表示式 2018年3月親測可用

import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.lang3.StringUtils; /** * @author kpzc *三大運

如何設計一門語言——表示式與領域特定語言DSL

幾個月前就一直有博友關心DSL的問題,於是我想一想,我在gac.codeplex.com裡面也建立了一些DSL,於是今天就來說一說這個事情。 建立DSL恐怕是很多人第一次設計一門語言的經歷,很少有人一開始上來就設計通用語言的。我自己第一次做這種事情是在高中寫這個傻逼ARPG的時候了。當時做了一個超

請實現一個函式用來匹配包括'.'和'*'的正則表示式。模式中的字元'.'表示任意一個字元而'*'表示它前面的字元可以出現任意次包含0次。 在本題中匹配是指字串的所有字元匹配整個模式。例如

本題源自劍指offer ----------------------------------------------------------------------------------- 如果模式串遇到*字元則有兩種狀態,第一匹配字元,則字串後移一位,模式串不變,第二,

tcl的表示式命令regexp的引數-lineanchor的理解

tcl中正則表示式用得很多,往往一句程式碼能夠做好幾條其他語句才能做完的工作,高效快捷; 在處理string中逐行匹配的情況下往往是用引數-line,但其實-line相當於-lineanchor和-linestop。 在使用-lineanchor時的實踐: Change

javascript使用表示式獲取查詢字串QueryString轉載

該方法大小寫敏感 <script> function fnOnload() { document.getElementById("SystemTree").src = "TreeList.aspx?PID=" + GetQueryString("PID");

表示式校驗時間格式2018-01-02

/** * 校驗時間格式為2018-01-02 * @param time * @return */ public boolean validationTimeFormat(String time) { boolean bool

JDK中表示式類庫詳解

二、以下是自己對正則表示式的一些理解。    [size=medium]1. 正則表示式規則1.1 普通字元    字母、數字、漢字、下劃線、以及後邊章節中沒有特殊定義的標點符號,都是"普通字元"。表示式中的普通字元,在匹配一個字串的時候,匹配與之相同的一個字元。    舉例1:表示式 "c",在匹配字串 "

表示式的學習之路為學習 自動機

一開始想要學習正則表示式是想學習自動機演算法,後來看自動機演算法是正則表示式的引擎,就決定先學一下正則表示式 以下資源取自很多網上資源,包括但不限於 百度百科 , CSDN,部落格園的一些部落格,我還包括一些國外文章的翻譯,在此就不一一給出連線了,如有侵權,請及時聯絡我,我

JS中利用表示式交換函式的引數位置

某百科中看到一個例子,要用正則表示式將函式foo(a,b,c)中的引數位置換為foo(b,a,c),正好又在複習JS的過程中看到了正則表示式的部分,於是考慮用JS來實現這個功能。 函式的引數同例題中一樣通過 [^,]* 進行匹配,於是寫出正則式: /foo\

python中表示式庫re的使用regex

一、正則表示式庫的引用 在python中,你要使用正則表示式,需要引用程式庫re。 import re 二、正則表示式函式說明: match =》嘗試在字串的開頭運用模式,返回一個match物件

Python-與文件項目瘋狂填詞

sub utf-8 pan In 例如 then fin HA 創建 創建一個瘋狂填詞(Mad Libs)程序,它將讀入文本文件,並讓用戶在該文本文件中出現ADJECTIVE、NOUN、ADVERB 或VERB 等單詞的地方,加上他們自己的文本。例如,一個文本文件可能看起來