定義正則表達(dá)式
- /.../ 用于定義正則表達(dá)式
- /.../g 表示全局匹配
- /.../i 表示不區(qū)分大小寫
- /.../m 表示多行匹配
JS正則匹配時(shí)本身就是支持多行,此處多行匹配只是影響正則表達(dá)式^和$, m模式也會(huì)使用^$來匹配換行的內(nèi)容)
匹配
JavaScript中支持正則表達(dá)式,其主要提供了兩個(gè)功能:
test(string)
檢查字符串中是否和正則匹配
n = 'uui99sdf'
reg = /\d+/
reg.test(n) ---> true
# 只要正則在字符串中存在就匹配,如果想要開頭和結(jié)尾匹配的話,就需要在正則前后加 ^和$
exec(string)
獲取正則表達(dá)式匹配的內(nèi)容,如果未匹配,值為null,否則,獲取匹配成功的數(shù)組。
非全局模式
獲取匹配結(jié)果數(shù)組,注意:第一個(gè)元素是第一個(gè)匹配的結(jié)果,后面元素是正則子匹配(正則內(nèi)容分組匹配)
var pattern = /\bJava\w*\b/;
var text = "JavaScript is more fun than Java or JavaBeans!";
result = pattern.exec(text)
var pattern = /\b(Java)\w*\b/;
var text = "JavaScript is more fun than Java or JavaBeans!";
result = pattern.exec(text)
全局模式
需要反復(fù)調(diào)用exec方法,來一個(gè)一個(gè)獲取結(jié)果,直到匹配獲取結(jié)果為null表示獲取完畢
var pattern = /\bJava\w*\b/g;
var text = "JavaScript is more fun than Java or JavaBeans!";
result = pattern.exec(text)
var pattern = /\b(Java)\w*\b/g;
var text = "JavaScript is more fun than Java or JavaBeans!";
result = pattern.exec(text)
字符串中相關(guān)方法
obj.search(regexp)
獲取索引位置,搜索整個(gè)字符串,返回匹配成功的第一個(gè)位置(g模式無效)
obj.match(regexp)
獲取匹配內(nèi)容,搜索整個(gè)字符串,獲取找到第一個(gè)匹配內(nèi)容,如果正則是g模式找到全部
obj.replace(regexp, replacement)
替換匹配替換,正則中有g(shù)則替換所有,否則只替換第一個(gè)匹配項(xiàng),
$數(shù)字:匹配的第n個(gè)組內(nèi)容;
$&:當(dāng)前匹配的內(nèi)容;
$`:位于匹配子串左側(cè)的文本;
$':位于匹配子串右側(cè)的文本
$$:直接量$符號