正則

正則有哪些方式?

re.test() str.search() str.match() str.replace()

【re.test()】

作用:
查看正則表達(dá)式與指定的字符串是否匹配

語法:

     boolean  regexObj.charAt(string)

參數(shù):
string 用來與正則表達(dá)式匹配的字符串

返回值:
布爾值true 或者false
匹配到的返回true,否則返回false

實(shí)例

var str = 'ahfhfjff';
var re = /\d/;
alert(re.test(str))//返回結(jié)果false

【str.search() 】

作用:
檢索指定字符串或者正則表達(dá)式匹配的字符串

語法:

    number string.search(string|regexObj)

參數(shù):
string|ergexPbj 字符串或者正則表達(dá)式

返回值:
返回?cái)?shù)字-----匹配到的字符串首次出現(xiàn)的位置 沒有檢索到就會(huì)返回-1

search方法和indexOf方法不同就在于search可以傳入正則 表達(dá)式,indexOf不能傳入正則表達(dá)式。

實(shí)例

var str = "a5bvf2341";
console.log( str.search(/\d/) );

返回結(jié)果 1

【str.match()】

作用:
檢索指定字符串或正則表達(dá)式匹配的字符串

語法:

    Array string.match(string|regexObj)

參數(shù):
string|regexObj 字符串或正則表達(dá)式

返回值:
返回?cái)?shù)組---把匹配到的字符串放在數(shù)組中
沒有檢測到就返回null
實(shí)例

var str = '12jrfjfj234';

            console.log( str.match("abc") ); 
            返回結(jié)果 //null

【str.replace()】

作用:
替換掉匹配的字符串或正則表達(dá)式匹配到的內(nèi)容

語法

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開頭,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開頭,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開頭,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ù)字開始,可以重復(fù)多次,以c結(jié)尾

var re = /(a(\d))\1*\2c/g;
console.log( str.match(re) );
返回結(jié)果:
0: "a1a11c"
1: "a2a22c"
2: "a33c"
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容