JS正則表達式總結

JS中正則定義的兩種方式:javascript

一、對象定義:var reg = new RegExp(pattern, attributes); 示例:var reg = new RegExp(i, "a");java

二、直接量語法:var reg = /pattern/attributes ; 示例:var reg = /a/i ;正則表達式

 

正則使用場景:數組

一、驗證spa

例如對郵箱格式進行驗證,通常在驗證狀況下,須要在頭尾分別加上^和$。對象

二、匹配或搜索替換blog

根據要求進行匹配或者替換某些字符,這種狀況通常對字符串部份內容進行匹配。索引

 

正則符號表示:ip

[.....]:匹配括號內的任何字符(即中括號表示匹配範圍字符串

[^.....]:匹配不在括號內的任何字符

[a-z]:匹配從小寫a到z之間的任何字符

[0-9]:匹配從數字0到9之間的任何字符

. :查找單個單詞,除了換行符和結束符

\w:查找單詞字符,至關於[a-zA-Z0-9]]

\W:查找非單詞字符,至關於[^a-zA-Z0-9]

\s:查找空白字符

\S:查找非空白字符

\d:查找數字

\D:查找非數字

\b:匹配單詞邊界

\r:查找回車符

\t:查找製表符

\0:查找null字符

\n:查找換行符

 

字符匹配數量:

{n,m}:匹配爲n到m範圍,最大能力匹配,即若是存在m個,則返回m個的匹配(大括號表示匹配數量範圍)

{n,}:匹配n次或更屢次

{n}:匹配n次

n?:匹配1或0次,至關於{0,1}

n+:匹配1次或更屢次,至關於{1,}

n*:匹配任意次數,至關於{0,}

n$:匹配結尾爲n的任意字符串

^n:匹配開頭爲n的任意字符串

?=n:匹配任何其後緊接指定字符串 n 的字符串,例如string2018,則能夠var reg = /\w*(?=2018)/;便可返回string,但若是爲string2017,則不知足匹配規則;

 

正則表達式屬性:

i:ignoreCase即忽略匹配中的大小寫;

g:global即表示全局匹配;

m:multiline即表示多行匹配;

 

正則表達式方法

一、test():檢索字符串是否存在匹配項,返回值爲布爾類型;

使用方法:pattern.test(str);

 

二、exec():檢索判斷字符串中的匹配項,若存在匹配,則返回第一個匹配項,且爲數組類型;

使用方法:pattern.exex(str)

var str = "schools";
var reg =/\w{1,2}/;
reg.exec(str); //["sc", index:0, input:"schools"]

 

三、search():檢索字符串中的匹配項,若存在,則返回第一個匹配項的索引

使用方法:str.search(pattern);

var str = "schools";
str.search(/\w(?=l)/); //即返回第二個o的索引,4

 

4.match():

分兩種狀況:

1)當不存在g屬性的時候,方法與exec同樣,使用方法:str.match(pattern);返回與exec()同樣的數組;

2)當存在g屬性的時候,返回數組包含全部匹配項

例如:

var str ="agbgcgd";
var reg = /\w(?=g)/g;
str.match(reg); //["a","b","c"];

 

5.replace():替換第一個匹配項;

使用方法:str.replace(pattern, replacement);

 

6.split():返回被以正則規定劃分的數組;

使用方法:str.split(pattern);

例如:str.split(/,+/) //以1個或多個 ,來劃分字符串;

 

特殊狀況:有種需求是在pattern中使用變量,這個時候就須要使用對象定義正則的方法了。

例如:var str = 「123」; var reg = new RegExp("/\d"+str+"\w*/");

能夠直接這樣與字符串鏈接同樣,直接插入。

相關文章
相關標籤/搜索