申明方式, 第二種可以使用變量
var regex = /xyz/;
var regex = new RegExp('xyz', i);
var reg = 'xyz';
var regex = new RegExp(reg);
- 在匹配的時(shí)候 會(huì)記住上次的
lastIndex
所以匹配的時(shí)候不應(yīng)該更改所要匹配的字符串
var r = /bb/g;
r.test('bb') // true
r.test('-bb-') // false
new RegExp('').test('abc')
-
exec()
用來(lái)返回匹配結(jié)果届囚,匹配成功竿屹,返回一個(gè)數(shù)組各淀,失敗返回null
var s = '_x_x';
var r1 = /x/;
var r2 = /y/;
r1.exec(s) // ["x"]
r2.exec(s) // null
-
String.prototype.match()
lastIndex
屬性無(wú)效 -
String.prototype.search()
返回第一個(gè)滿(mǎn)足的位置盾鳞,沒(méi)有返回-1 String.prototype.replace()
替換字符
$& 指代匹配的字符串
$` 匹配結(jié)果之前all
$' 匹配結(jié)果之后all
'hello world'.replace(/(\w+)\s(\w+)/, '$2 $1')
// "world hello"
'abc'.replace('b', '[$`-$&-$\']')
// "a[a-b-c]c"
第二個(gè)參數(shù)是 函數(shù)
var a = 'The quick brown fox jumped over the lazy dog.';
var pattern = /quick|brown|lazy/ig;
a.replace(pattern, function replacer(match) {
return match.toUpperCase();
});
捕捉模式 替換模板
var prices = {
'p1': '$1.99',
'p2': '$9.99',
'p3': '$5.00'
};
var template = '<span id="p1"></span>'
+ '<span id="p2"></span>'
+ '<span id="p3"></span>';
template.replace(
/(<span id=")(.*?)(">)(<\/span>)/g,
function(match, $1, $2, $3, $4){
return $1 + $2 + $3 + prices[$2] + $4;
}
);
// "<span id="p1">$1.99</span><span id="p2">$9.99</span><span id="p3">$5.00</span>"
字面量字符和元字符
- 點(diǎn)字符(.)
點(diǎn)字符(.)匹配除回車(chē)(\r)犬性、換行(\n) 、行分隔符(\u2028)和段分隔符(\u2029)以外的所有字符 - 位置符
^
$
開(kāi)始 結(jié)束 - 選擇符|
/11|22/.test('911') // true
-
[]
&&[^]
如果方括號(hào)里面沒(méi)有其他字符腾仅,只有[^]
就表示匹配一起字符乒裆,而點(diǎn)號(hào)(.)
不包括換行回車(chē)這些
/[abc]/.test('hello world') // false
/[abc]/.test('apple') // true
/[^abc]/.test('bbc') // false
var s = 'Please yes\nmake my day!';
s.match(/yes.*day/) // null
s.match(/yes[^]*day/) // [ 'yes\nmake my day']
-
[-]
可選連字符 - 預(yù)定義模式
\d 匹配0-9之間的任一數(shù)字,相當(dāng)于[0-9]推励。
\D 匹配所有0-9以外的字符鹤耍,相當(dāng)于[^0-9]。
\w 匹配任意的字母验辞、數(shù)字和下劃線稿黄,相當(dāng)于[A-Za-z0-9_]。
\W 除所有字母跌造、數(shù)字和下劃線以外的字符杆怕,相當(dāng)于[^A-Za-z0-9_]。
\s 匹配空格(包括換行符鼻听、制表符财著、空格符等),相等于[ \t\r\n\v\f]撑碴。
\S 匹配非空格的字符撑教,相當(dāng)于[^ \t\r\n\v\f]。
\b 匹配詞的邊界醉拓。
\B 匹配非詞邊界伟姐,即在詞的內(nèi)部。
-
{n,m}
表示匹配次數(shù)亿卤,n到m次,{n,m}表示重復(fù)不少于n次愤兵,不多于m次。
排吴? 表示出現(xiàn)0 到1次 等同`{0,1}`
* 表示0到多次秆乳,等同于{0,}
+ 表示1到多次,等同于{1,}
- 貪婪模式
+?
*?
??