正則表達式筆記

參考連接:正則表達式

http://www.regexlab.com/zh/deelx/syntax.htmspa

 

正則表達式問號特殊用法:htm

1、在表示重複的字符後面加問號,好比+?,*?,{2,3}?能夠中止匹配的貪婪模式。get

/*string

 * 結果"aaa";貪婪模式下會盡量多的匹配,console

 * 因此會匹配3個重複的字符co

 */字符

var pattern = /\w{2,3}/;ab

console.log("aaaa".match(pattern)[0]);tar

 

/*

 * 結果"aa";加問號後會儘量少的匹配重複次數,

 * 因此匹配到了2個重複的字符

 */

var pattern2 = /\w{2,3}?/;

console.log("aaaa".match(pattern2)[0]);

 

2、在分組內使用?:能夠產生沒有編號的分組,好比

/* 結果"ab_";匹配到的字符被第一個分組(ab)

 * 替換

 */

var pattern = /(ab)\w+(ba)/;

console.log("abcba_".replace(pattern, "$1"));

 

/*

 * 結果"ba_";第一次分組內加入了?:,產生的是一個

 * 沒有編號的分組,因此$1匹配的字符是第二個分組,

 * 也就是第一個編號分組(ba)相匹配的文本內容

 */

var pattern2 = /(?:ab)\w+(ba)/;

console.log("abcba_".replace(pattern2, "$1"));

 

3(?=)(?!);順序確定環視順序否認環視

/* 前兩個結果是["string"],後兩個結果是null;

 * str(?=ings)ing/匹配"string",r後面的位置右邊必須跟

 * ings;/string(?=s)/同樣;匹配"string";g後面的位置

 * 的右邊必須跟一個s"string_x"雖然也含有"string"可是

 * 不知足(?=...)括號內的條件

 */

var pattern=/str(?=ings)ing/;

console.log("strings.a".match(pattern));

console.log("strings.a".match(/string(?=s)/));

console.log("string_x".match(pattern));

console.log("string_x".match(/string(?=s)/));

 

/* (?!...)某位置右邊不能有!後匹配的字符,

 * string(?!s)/匹配"string","g"後不能跟"s"

 */

var pattern=/string(?!s)/;

console.log("strings".match(pattern));//null

console.log("string.".match(pattern));//["string"]

相關文章
相關標籤/搜索