首先, 先理解下概念: 非貪婪模式 即在正則後加問號"?" 意義為按需匹配,
不明白, 我們先往下看
共用函式:
//即為字串高亮為紅色
function hightlight(str)
var reg = new regexp('(a+)'); //a+為 一到多個a匹配
var str = 'aaa';
var newstr = str.replace(reg, hightlight);
document.write(newstr + "
");
輸出: aaa
注: 以上**等同於:
var reg = new regexp('(a+)'); //a+為 一到多個a匹配
var str = 'aaa';
var newstr = str.replace(reg, "$1"); //
$1 表示正則中匹配括號內的內容的第乙個
document.write(newstr + "
");
var reg = new regexp('(a+?)'); //加上?號後為非貪婪模式, 即匹配完成即返回, 不繼續
var str = 'aaa';
var newstr = str.replace(reg, hightlight);
document.write(newstr + "
");
輸出: aaa
var reg = new regexp('(a*?b)');var str = 'aaab';
var newstr = str.replace(reg, hightlight);
document.write(newstr);
輸出: aaab
js正則貪婪模式 JS關於正則的非貪婪模式
首先正則是很複雜,很巧妙的。你舉的這個例子說明貪婪模式和非貪婪模式是不對的。啥是貪婪模式,和非貪婪模式?貪婪模式,就是 貪得無厭 有了還要,有多少要多少,指導沒有 字串尾 非貪婪模式,恰好相反,匹配了就不要了,就得到結果。我先舉乙個例子來說明,貪婪模式和非貪婪模式,只在你的基礎上稍稍改動,為了後面對...
貪婪模式和非貪婪模式
1.什麼是正規表示式的貪婪與非貪婪匹配 如 string str abcaxc patter p ab c 貪婪匹配 正規表示式一般趨向於最大長度匹配,也就是所謂的貪婪匹配。如上面使用模式p匹配字串str,結果就是匹配到 abcaxc ab c 非貪婪匹配 就是匹配到結果就好,就少的匹配字元。如上面...
貪婪模式和非貪婪模式
正規表示式通常使用於查詢匹配的字串。python裡數量詞預設是貪婪的 在少數語言裡也可能預設是非貪婪 總是嘗試匹配盡可能多的字元 非貪婪模式剛好相反,總是嘗試匹配盡可能少的字元。例如,正規表示式 ab 如果用於查詢 abbbc 就會找到 abbb 如果使用非貪婪的數量詞 ab 就會找到 a 例如1 ...