正則表達式用於定義一些字符串的規則
計算機能夠根據正則表達式來檢查一個字符串是否符合規則
將字符串中符合規則的內容取出來正則表達式
語法:數組
var 變量 = new RegExp("正則表達式","匹配模式");
使用typeof檢查正則對象,會返回object。var reg = new RegExp("a");這個正則表達式用來檢驗是否含有a函數
var reg = new RegExp(); console.log(typeof reg) //object
正則表達式的方法
test()
使用這個方法能夠用來檢查一個字符串是否符合正則表達式的規則
若是符合則返回true,不然返回falsecode
var reg = new RegExp("a"); var str = "a"; var result = reg.test(str); console.log(result); //true console.log(reg.test("bcdA")); //false console.log(reg.test("bcd")); //false console.log(reg.test("bcad")); //true
在構造函數中能夠傳遞一個匹配模式做爲第二個參數
能夠是g:全局匹配模式,i:忽略大小寫
i:忽略大小寫對象
var reg = new RegExp("a","i"); console.log(reg.test("bcad")); //true console.log(reg.test("bcdA")); //true
使用字面量來建立正則表達式
語法:索引
var 變量 = /正則表達式/匹配模式
使用字面量的方式建立更加簡單,
使用構造函數建立更加靈活 var reg = new RegExp("a","i");字符串
var reg = /a/i; console.log(reg.test("abc"));
建立一個正則表達式,檢查一個字符串中是否有a或b
使用|表示或者的意思it
var reg = /a|b/; console.log(reg.test("acd"));
建立一個正則表達式檢查一個字符串是否有字母
[]裏的內容也是或的關係
[ab] == a|b
[a-z] 任意小寫字母
[A-Z] 任意大寫字母
[A-z] 任意字母
[0-9] 任意數字console
reg = /[ab]/ console.log(reg.test("acd"));
檢查一個字符串中是否有abc或adc或aectest
reg = /a[bde]c/ console.log(reg.test("aeec")); //false console.log(reg.test("adc")); //true
[^ ]除了。除了裏面的都行
reg = /[^ab]/; //除了ab都行 reg = /[^0-9]/; //除了數字
split()
能夠將字符串拆分爲一個數組
方法中能夠傳遞一個正則表達式做爲參數,這樣方法將會根據正則表達式去拆分字符串
這個方法即便不指定全局匹配,也會全都拆分
var str = "1a2b3c4d5e6f" var result = str.split("c"); console.log(result.length); //2 console.log(result); //1a2b3 , 4d5e6f
根據任意字母來將字符串拆分
var result = str.split(/[A-z]/); console.log(result); //1,2,3,4,5,6
search()
能夠搜索字符串中是否含有指定內容
若是搜索到指定內容,則會返回第一次出現的索引,若是沒有搜索到返回-1
它能夠接受一個正則表達式做爲參數,而後會根據正則表達式去檢索字符串
search()只會查找第一個,即便設置全局匹配也沒用\
str = "hello abc hello abc"; result = str.search("abc"); console.log(result); //6
搜素字符串中是否還有abc或aec或afc
result = str.search(/a[bef]c/); //6
match()
能夠根據正則表達式,從一個字符串中將符合條件的內容提取出來
默認狀況下咱們的match只會找到第一個符合要求的內容,找到之後就中止檢索,
咱們能夠設置正則表達式爲全局匹配模式,這樣就會匹配到全部的內容
咱們爲正則表達式設置多個匹配模式,且順序無所謂
match()會將匹配到的內容封裝到一個數組中返回,即便只查詢到一個結果
str = "1a2b3c4d5e6f"; result = str.match(/[A-z]/); console.log(result); //a result = str.match(/[a-z]/ig); //即全局又忽略大小寫 console.log(result); //a,b,c,d,e,f console.log(result[1]); //b
replace()
能夠將字符串中指定內容替換爲新的內容
參數:
1.被替換的內容
2.新的內容
默認值只會替換第一個,能夠接受一個正則表達式做爲參數
str = "1a2b3c4d5e6fa8a" result = str.replace("a","@-@"); console.log(result); //1@-@2b3c4d5e6fa8a result = str.replace(/a/gi,"@-@"); //即全局又忽略大小寫 console.log(result); //1@-@2b3c4d5e6f@-@8@-@ result = str.replace(/[a-z]/gi,"@-@"); //即全局又忽略大小寫 console.log(result);
使用空串替換則會都刪掉
result = str.replace(/[a-z]/gi,""); console.log(result); //1234568
量詞
經過量詞能夠設置一個內容出現的次數
量詞只對它前邊的一個內容起做用
{n}:正好出現n次
{m,n}:出現m到n次
{m,}:出現m次以上
建立一個正則表達式檢查一個字符串中是否還有aaa
var reg = /a{3}/; //aaa console.log(reg.test("aaabc")) reg = /(ab){3}/; //ababab reg = /ab{1,3}c/; //b出現1-3次 reg = /ab{2,}c/; //b出現兩次以上
+(加號):至少一個,至關於{1,}
reg = /ab+c/; //b至少一個
✳(星號):0個或多個,至關於{0,} //b0或多
reg = /ab*c/;
?(問號):0個或1個,至關於{0,1} //b0或1
reg = /ab?c/;
檢察一個字符串中是否以a開頭
^:表示開頭
reg = /^a/; //以a開頭
$:表示結尾
reg = /a$/; //以a結尾
若是在正則表達式中同時使用^$則要求字符串必須徹底符合正則表達式
reg = /^a$/; //a既是開頭又是結尾 console.log(reg.test("aba")) //false
以a開頭或者以a結尾
reg = /^a|a$/; console.log(reg.test("aba")) //true
檢查一個字符串中是否含有.
.點 表示任意字符
var reg = /./; console.log(reg.test("dsadad")); //true console.log(reg.test("dsadad...")); //true
在正則表達式中使用 \ 做爲轉義字符
. 來表示.
var reg = /\./; console.log(reg.test("dsadad")); //false console.log(reg.test("dsad.ad")); //true
\表示\
reg = /\\/; console.log(reg.test("d.\\")); //true console.log("\\"); // 在字符串裏\\表示\,輸出一個\
注意:使用構造函數時因爲它的參數是字符串,而\是字符串中轉義字符
若是要使用 \ 則須要使用 \ 來代替
reg = new RegExp("\\."); console.log(reg); //輸出 \. reg = new RegExp("\\\\"); console.log(reg); //輸出\\
\w
任意字母,數字,_(下劃線) [A-z0-9_]
reg = /\w/; console.log(reg.test("ads54575_")); //true
\W
除了字母,數字,_(下劃線) [^A-z0-9_]
reg = /\W/; console.log(reg.test("ads54575_")); //
\d
任意的數字[0-9]
reg = /\d/; console.log(reg.test("ads_")); // console.log(reg.test("574728")); //
\D
除了數字[^0-9]
reg = /\D/; console.log(reg.test("ads54575_")); // console.log(reg.test("ads_")); //
\s
空格
reg = /\s/; console.log(reg.test("ads54575_")); // console.log(reg.test("ads5 45 75_")); //
\S
除了空格
reg = /\S/; console.log(reg.test("ads54575_")); // console.log(reg.test("ads 54 575_")); //
\b
單詞邊界(響鈴單詞空隙)
建立一個正則表達式檢查一個字符串中是否含有單詞child
reg = /child/; console.log(reg.test("children")); //true 但child和children不同 reg = /\bchild\b/; console.log(reg.test("children")); // console.log(reg.test("child hello")); //
\B
除了單詞邊界
接受一個用戶輸入
//var str = prompt("請輸入你的用戶名"); var str = " h e l l o "
去除掉字符串中先後的空格
str = str.replace(/\s/g,"") console.log(str); //hello 中間的空格也被去除
去除前邊的空格
str = str.replace(/^\s*/,"") console.log(str); //h e l l o 去前不去後
去除結尾的空格
str = str.replace(/\s*$/,"") console.log(str); // h e l l o去後不去前
匹配開頭結尾的空格去除先後
str = str.replace(/^\s*|\s*$/g,""); str = str.replace(/^\s+|\s+$/g,""); //兩種方法區別在於0或1 *和+的規則 console.log(str); //h e l l o 去先後不去中間
hello@abc.com.cn
任意字母數字下劃線.任意字母數字下劃線@任意字母數字.任意的字母(2-5位).任意的字母(2-5位)
\w{3,}(.\w+)*@[A-z0-9]+([A-z]{2,5}){1,2}
var emailReg = /^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/; var email = "ada415@ada.com"; console.log(emailReg.test(email));