正則表達(dá)式(regular expression)描述了一種字符串匹配的模式湘纵,可以用來檢查一個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等奔浅。
創(chuàng)建方式:
- 正則表達(dá)式自變量
語法:/正則表達(dá)式主體/修飾符(可選)例:
var reg = /abc/;
- new RegExp(),RegExp()中有兩個參數(shù)于颖,參數(shù)1為正則規(guī)則坪仇,參數(shù)2為正則表達(dá)式修飾符
var reg =new RegExp("abc");
正則表達(dá)式修飾符
- i:執(zhí)行對大小寫不敏感的匹配。
- g:執(zhí)行全局匹配(查找所有匹配而非在找到第一個匹配后停止)复亏。
- m:執(zhí)行多行匹配趾娃。
正則表達(dá)式模式
方括號用于查找某個范圍內(nèi)的字符,一個對方括號占一位字符:
- [abc] :查找方括號內(nèi)的任何字符缔御,例:
var reg=/[ad]/;//查找第一位為a或者d字符串
var str = "abc";
console.log(reg.test(str));//true
- [0-9]抬闷、[a-z]、[A-Z]耕突、[A-z]笤成、[0-9A-z]:查找方括號之間的任何字符,例:
var reg=/[0-9]/;//查找第一位為0-9的字符串
var str = "abc";
console.log(reg.test(str));//false
- [^ab]:查找給定集合外的任何字符眷茁,例:
var reg=/[^ab]/;//查找第一位不是a或b的字符串
var str = "abc";
console.log(reg.test(str));//true
- (x|y) :查找任何以 | 分隔的選項(xiàng)炕泳,例:
var reg=/[ab|b];//查找第一位是a、b或b的字符串
var str = "abc";
console.log(reg.test(str));//true
元字符
- *:查找單個字符上祈,除了換行和結(jié)束符
- \w:相當(dāng)于[0-9A-z]
- \W:相當(dāng)于[0-9A-z]培遵、[\w]
- \d:相當(dāng)于[0-9]
- \D:相當(dāng)于[0-9]、[\d]
- \s:查找空白字符雇逞,相當(dāng)于[\t\f\r\n\v]
- \S:查找非空白字符荤懂,相當(dāng)于[\t\f\r\n\v]、[\s]
- \b:單詞邊界
- \B:非單詞邊界
- \uxxxx:查找以十六進(jìn)制數(shù) xxxx 規(guī)定的 Unicode 字符
量詞
- n+:匹配任何包含至少一個 n 的字符串{}塘砸。
- n*:匹配任何包含零個或多個 n 的字符串节仿。
- n?:匹配任何包含零個或一個 n 的字符串。
- n{x}:匹配任何包含x個 n 的字符串掉蔬。
- n{x,y}:匹配任何包含x到y(tǒng)個 n 的字符串廊宪。
- n$:匹配以n結(jié)尾的字符串
- ^n:匹配以n開頭的字符串
- ?=n:匹配任何其后緊接著指定字符串n的字符集
- ?!n:匹配任何其后沒有緊接著指定字符串n的字符集
例題
1矾瘾、檢驗(yàn)一個字符串首尾是否是數(shù)字?
var reg=/^\d|\d$/;
var str = "0abc";
console.log(reg.test(str));//true
2箭启、檢驗(yàn)一個字符串首尾是否都是數(shù)字壕翩?
var reg=/^\d[\w\W]*\d$/;
var str = "0abc1";
console.log(reg.test(str));//false
3、將the-first-name轉(zhuǎn)換為theFirstName
var reg=/-(\w)/g;
var str="the-first-name";
console.log(str.replace(reg,function($,$1){
return $1.toUpperCase();
}));//theFirstName
4傅寡、字符串去重放妈,例如將"aaaaaabbbbcccccccccddddddd"改為"abcd"
var reg1=/(\w)\1*/g;
var str1="aaaaaabbbbcccccccccddddddd";
console.log(str.replace(reg1,$1));//abcd
5、將100000000000改為100.000.000.000荐操。
var str="100000000000"
var reg=/(?=(\B)(\d{3})+$)/g;
console.log(str.replace(reg,"."));//100.000.000.000