JavaScript中用RegExp對象表示正則表達式殿较,可以用RegExp()構(gòu)造函數(shù)來創(chuàng)建正則表達式御滩,不過更多時候是用對象直接量來創(chuàng)建
如:var re = /s$/;
這個正則表達式可以匹配以字符s結(jié)尾的字符串
1.字符類###
把字符放進方括號就變成了字符類闸婴,一個字符類可以匹配它所包含的任意字符嘿歌。
如:/[abc]/
與字母a绊困、b琼腔、c中的任意一個都匹配寞秃。
常見字符類
[abc]
方括號內(nèi)任意字符
[^abc]
不在方括號內(nèi)的任意字符
.
除換行符和其他Unicode行終止符之外的任意字符
\w
任何ASCII字符組成的單詞斟叼,等價于[a-zA-Z0-9]
\W
任何不是ASCII字符組成的單詞,等價于[^a-zA-Z0-9]
\s
任何Unicode空白符
\d
任何ASCII數(shù)字
2.重復###
{n,m}
匹配前一項至少n次春寿,至多m次
{n,}
匹配前一項n次或更多次
{n}
匹配前一項n次
?
匹配前一項0次或1次
+
匹配前一項1次或多次
*
匹配前一項0次或多次
栗子:
/\d{2,4}/
匹配2-4個數(shù)字
/\w{3}\d?
匹配3個字符和一個可選的數(shù)字
3.分組###
字符”|“用于分隔供選擇的字符朗涩,如/ab|cd|ef/
可匹配字符串”ab“,也可匹配”cd“,還可匹配”ef“绑改。
圓括號"()"可用于把單獨的項組合成子表達式
4.修飾符###
修飾符放在"/"之外谢床,用語說明匹配模式兄一。JavaScript支持三種修飾符
i????執(zhí)行不區(qū)分大小寫的匹配
g???執(zhí)行全局匹配,即找到所有的匹配识腿,而不是在找到第一個后就停止
m??執(zhí)行多行匹配出革。在這種模式下,如果被檢索的字符串包含多行渡讼,^和$分別匹配每一行的開頭和結(jié)束
5.指定匹配位置###
^ 匹配字符串的開頭
$ 匹配字符串的結(jié)尾
\b 匹配單詞的邊界
(?=p) 零寬正向先行斷言骂束,要求接下來的字符都與p匹配
(?!p) 零寬負向先行斷言,要求接下來的字符都不與p匹配
/Java(?!Script)/g
匹配以“Java”開頭硝全,但接下來的字符不是“Script”的字符串
5.RegExp對象###
- RegExp對象的屬性
source:只讀的字符串栖雾,包含正則表達式的源文本
lastIndex:一個可讀寫的整數(shù),如果匹配模式帶有g(shù)修飾符伟众,這個屬性用于存儲下次匹配的起始位置析藕。 - RegExp對象的方法
exec():檢索字符串中指定的值。如果找到匹配的值凳厢,返回一個結(jié)果數(shù)組账胧,并確定其位置。如果沒有找到匹配的值先紫,就返回null
var str = 'Hello World';
var re = /Wo/g;
var result = re.exec(str);
if(result != null){
console.log('Find '+result+' at '+result.index);//輸出Find Wo at 6
console.log('next search begin at '+re.lastIndex);//輸出next search begin at 8
}
test():參數(shù)是一個字符串治泥,如果成功匹配,返回true遮精;如果沒有匹配到結(jié)果居夹,返回false
6.支持正則表達式的String對象的方法###
String對象支持4種使用正則表達式的方法。
- search():參數(shù)是一個正則表達式本冲,返回一個與之匹配的子串的起始位置准脂,如果找不到子串,返回-1檬洞。
- replace():執(zhí)行檢索和替換狸膏。第一個參數(shù)是一個正則表達式,第二個參數(shù)是一個內(nèi)容為替換文本的字符串添怔。
//將Lebron James替換為James Lebron
var name = 'Lebron James';
var result = name.replace(/(\w+)\s*\s*(\w+)/g,'$2 $1');
console.log(result);
- match():唯一參數(shù)是一個正則表達式湾戳,返回一個由匹配結(jié)果組成的數(shù)組。
//匹配出字符串中的數(shù)字广料,將其保存到一個數(shù)組中
var str = 'rgb(237,13,235)';
var result = str.match(/\d+/g);
console.log(result);//輸出["237", "13", "235"]
- split():將調(diào)用它的字符串拆分成一個子串組成的數(shù)組砾脑。第一個參數(shù)可以是字符串或者正則表達式,第二個可選參數(shù)可以指定返回數(shù)組的最大長度性昭。