正規表達式
正規表達式用于定義一些字元串的規則,計算機可以根據正規表達式來檢查一個字元串是否符合規則,或者将字元串中符合規則的内容提取出來。
一、建立正規表達式對象
文法一:var 變量 = new RegExp(“正規表達式”,“比對模式”);
文法二:var 變量 = /正規表達式/比對模式;
-
比對模式:
i --> 忽略大小寫
g -->全局比對模式
- 使用test()方法檢查字元串是否符合規則
var reg2 = /a/; //比對字元串中有沒有a
document.write(reg2.test("a")); //true
二、正規表達式的文法
| 表示或,[]中的内容也表示或
a或b或c: a | b | c ,[abc]
任意小寫字母:[ a-z ]
任意字母:[ A-z ]
任意數字:[0-9]
abc或adc或aec:a[ bde ]c
[^ ]表示除了
除了數字:[^0-9]
量詞,隻對前面的一個内容起作用
{}
a連續出現n次:a{n}
a出現m-n次:a{m,n}
a出現m次以上:a{m}
+ 至少出現一次 == {1,}
a出現至少一次:a+
* 0次或多次 == {0,}
? 0次或一次 == {0,1}
a出現0次或一次:a?
^ 表示開頭
以a開頭:/^a/
$ 表示結尾
以a結尾:/a$/
. 表示任意字元
\w 表示任意字母、數字、_
\W 除了字母、數字、_
\d 表示任意數字
\D 表示除了任意數字
\s 表示空格
\S 表示除了空格
\b 單詞邊界,辨別獨立的單詞
查找有沒有單詞child: / \bchild\b /
\B 除了單詞邊界
正則文法:https://www.runoob.com/jsref/jsref-obj-regexp.html
三、支援正規表達式的String方法
split()
可以向split()方法傳遞一個正規表達式作為參數,split()方法會根據正規表達式的規則去拆分字元串,并放在數組中傳回。
var str = "1a2b3c4d5F6E7O8";
document.write(str+"<br>"); //1a2b3c4d5F6E7O8
str = str.split(/[A-z]/);
document.write(str); //1,2,3,4,5,6,7,8
search()
可以向search()方法傳遞一個正規表達式作為參數,search()會在字元串中尋找符合規則的内容,并傳回其第一次出現的位置索引
search()隻能查找第一個符合規則的内容,設定g也沒用
var str = "hello hello world";
//在字元串str中尋找e
document.write(str.search(/e/g)); //1
match()
可以向match()方法傳遞一個正規表達式作為參數,match()方法會在字元串中尋找一個或多個符合規則的内容,并将這些内容放在數組中傳回。
預設情況下,match()方法找到第一個符合規則的内容後就不再檢索,如果想要傳回所有符合規則的内容,就将比對模式改為g(全局檢索模式)。
var str = "hello hello world";
//尋找字元串str中屬于a-l的内容
document.write(str.match(/[a-l]/g));//h,e,l,l,h,e,l,l,l,d
replace()
replace()方法可以替換指定内容,預設替換第一個符合規則的内容
參數一:要替換的内容,可以是一個字元串,也可以是一個正規表達式
參數二:新内容
var str = "hello hello world";
//尋找l,替換為¥
document.write(str.replace(/l/g,"¥")); //he¥¥o he¥¥o wor¥d
練習
1.去除字元串中的空格
var str2 = " he ll o ";
console.log(str2); // he ll o
//去除所有空格
var result = str2.replace(/\s/g,""); //hello
//去除前面的空格
result = str2.replace(/^\s*/,""); //he ll o
//去除後面的空格
result = str2.replace(/(\s*)$/,""); // he ll o
console.log(result);
2.郵件正則
var reg = /^\w+@[a-z0-9]+\.[a-z]{2,5}$/;
document.write(reg.test("[email protected]")); //true