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*/");
能夠直接這樣與字符串鏈接同樣,直接插入。