正則有哪些方式?
re.test() str.search() str.match() str.replace()
【re.test()】
作用:
查看正則表達(dá)式與指定的字符串是否匹配
語(yǔ)法:
boolean regexObj.charAt(string)
參數(shù):
string 用來(lái)與正則表達(dá)式匹配的字符串
返回值:
布爾值true 或者false
匹配到的返回true变泄,否則返回false
實(shí)例
var str = 'ahfhfjff';
var re = /\d/;
alert(re.test(str))//返回結(jié)果false
【str.search() 】
作用:
檢索指定字符串或者正則表達(dá)式匹配的字符串
語(yǔ)法:
number string.search(string|regexObj)
參數(shù):
string|ergexPbj 字符串或者正則表達(dá)式
返回值:
返回?cái)?shù)字-----匹配到的字符串首次出現(xiàn)的位置 沒(méi)有檢索到就會(huì)返回-1
search方法和indexOf方法不同就在于search可以傳入正則 表達(dá)式微渠,indexOf不能傳入正則表達(dá)式友题。
實(shí)例
var str = "a5bvf2341";
console.log( str.search(/\d/) );
返回結(jié)果 1
【str.match()】
作用:
檢索指定字符串或正則表達(dá)式匹配的字符串
語(yǔ)法:
Array string.match(string|regexObj)
參數(shù):
string|regexObj 字符串或正則表達(dá)式
返回值:
返回?cái)?shù)組---把匹配到的字符串放在數(shù)組中
沒(méi)有檢測(cè)到就返回null
實(shí)例
var str = '12jrfjfj234';
console.log( str.match("abc") );
返回結(jié)果 //null
【str.replace()】
作用:
替換掉匹配的字符串或正則表達(dá)式匹配到的內(nèi)容
語(yǔ)法
string.replace(string|regexObj,string|function)
參數(shù)
(string|regexObj,string|function)
第一個(gè)參數(shù):字符串或正則表達(dá)式
第二個(gè)參數(shù):字符串或者函數(shù)
注意第二個(gè)參數(shù)為函數(shù)闲勺,則必須有返回值否則 替換后的內(nèi)容為undefied
返回值
替換后新的字符串
實(shí)例
var str = "ahfhffhfh";
var newStr = str.replace("a","A");
返回結(jié)果 Ahfhffhfh
正則字符
\d一個(gè)數(shù)字
\D非數(shù)字
\s 一個(gè)空格
\S 非空格
\w 數(shù)字 字母 下劃線
\W 非數(shù)字绿贞,字母陋守,下劃線
\b 單詞的邊界符
\B 非邊界符
():
在正則表達(dá)式中,稱之為子項(xiàng)表達(dá)式或子項(xiàng)
范例
var str = "a455ca455c";
//規(guī)則:a開(kāi)頭淹魄,c結(jié)尾郁惜,中間一堆數(shù)字
var re = /(a((\d)+))c/g; //用子項(xiàng)
str.replace(re,function ($0,$1,$2,$3,$4){
console.log( $0,$1,$2,$3,$4 );
})
console.log( str.match(re) );
?:
不捕獲分組信息
var str = "a1c14ca2c";
//規(guī)則:a開(kāi)頭甲锡,c結(jié)尾兆蕉,中間的數(shù)字為1或2或3
var re = /a(?:1|2|3)c/;
console.log( str.match(re) );
[]:
在括號(hào)中放入的字符集, 匹配中括號(hào)任意一個(gè)字符
范例
var str = "afcadcaFca6ca10ca0ca100c";
//規(guī)則:a開(kāi)頭缤沦,c結(jié)尾虎韵,中間的數(shù)字為a-z
var re = /a[a-zA-Z]c/g;
console.log( str.match(re) );
[0-9] [1-5]
[a-z] [A-Z] [A-z]
匹配大小寫區(qū)間
[a-zA-Z]
[^]:
排除中括號(hào)中任意一個(gè)字符
范例
var str = "afcadcaFca6ca10ca0ca100c";
var re = /a[^a-zA-Z]c/g;
console.log( str.match(re) );
量尺
{n,m}:
n,m都是數(shù)字
{n} 重復(fù)n次
{n,} 至少重復(fù)n次疚俱,最多不限
{n,m} 至少重復(fù)n次劝术,最多重復(fù)m次
+:
{1,}至少重復(fù)1次缩多,最多不限
?:
{0,1}至少重復(fù)0次呆奕,最多重復(fù)1次
*:
{0,}至少重復(fù)0次,最多不限
范例
var str = "aca1ca12ca34ca123ca4444c";
var re = /a\d?c/g;
console.log( str.match(re) );
反向應(yīng)用
反向引用 引用整個(gè)正則中衬吆,分組內(nèi)的內(nèi)容
\1 \2 \3
\1 引用第一組
\2 引用第二組
范例
var str = 'a1c1ca1a11csa2a22c2a33c';
//規(guī)則:a和一個(gè)數(shù)字開(kāi)始梁钾,可以重復(fù)多次,以c結(jié)尾
var re = /(a(\d))\1*\2c/g;
console.log( str.match(re) );
返回結(jié)果:
0: "a1a11c"
1: "a2a22c"
2: "a33c"