compile(string regex, string flags):預(yù)編譯正則表達式以使其運行更快,經(jīng)過測試的確預(yù)先編譯后效率有明顯提升。regex參數(shù)為正則表達式,flags可以為以下3個值的組合: g – 全局搜索,我的試驗結(jié)果是不加g標志就只能匹配第一個符合條件的字符串 i – 忽略大小寫 m – 多行搜索,似乎默認已經(jīng)是多行搜索了
index:字符串中第一個匹配表達式的位置,初始為-1 input:正則表達式的匹配目標,注意是只讀的 lastIndex:下一個匹配表達式的位置,原話是(Returns the character position where the next match begins in a searched string.)也不知道有沒有翻譯錯,這個屬性我沒有用到。 lastMatch:最后一個匹配表達式的字符串 lastParen:最后一個匹配的子匹配串,比如正則表達式里有多個以()分組的匹配項,lastParen表示最后一組所匹配的結(jié)果 leftContext:從目標字符串的開頭到last match的起始位置的所有字符。 rightContext:從last match的結(jié)束位置到整個目標字符串的結(jié)束位置的所有字符。 $1…$9:表示第n組匹配的結(jié)果,這個在正則表達式里有多個以()分組時有用
function matchDemo() { var s; var re = new RegExp("d(b+)(d)","ig"); var str = "cdbBdbsbdbdz"; var arr = re.exec(str); s = "$1 contains: " + RegExp.$1 + "\n"; s += "$2 contains: " + RegExp.$2 + "\n"; s += "$3 contains: " + RegExp.$3; return(s); } function RegExpTest() { var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion()) if (ver >= 5.5){ var src = "The rain in Spain falls mainly in the plain."; var re = /\w+/g; var arr; while ((arr = re.exec(src)) != null) print(arr.index + "-" + arr.lastIndex + "\t" + arr); } else{ alert("You need a newer version of JScript for this to work"); } }
function matchDemo() { var s; //Declare variable. var re = new RegExp("d(b+)(d)","ig"); //Regular expression pattern. var str = "cdbBdbsbdbdz"; //String to be searched. var arr = re.exec(str); //Perform the search. s = "$1 returns: " + RegExp.$1 + "\n"; s += "$2 returns: " + RegExp.$2 + "\n"; s += "$3 returns: " + RegExp.$3 + "\n"; s += "input returns : " + RegExp.input + "\n"; s += "lastMatch returns: " + RegExp.lastMatch + "\n"; s += "leftContext returns: " + RegExp.leftContext + "\n"; s += "rightContext returns: " + RegExp.rightContext + "\n"; s += "lastParen returns: " + RegExp.lastParen + "\n"; return(s); //Return results. } document.write(matchDemo());