正則表達式,又稱規則表達式。(英語:Regular Expression,在代碼中常簡寫爲regex、regexp或RE),計算機科學的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本。
許多程序設計語言都支持利用正則表達式進行字符串操作
創建正則表達式的對象
使用構造函數創建正則表達式
語法:
var 變量 = new RegExp(“正則表達式”,“匹配模式”);
在構造函數中可以傳遞一個匹配模式作爲第二個參數
i 忽略大小寫
g 全局匹配模式
使用字面量來創建正則表達式
語法: var 變量 = /正則表達式/匹配模式
字面量創建簡單但是函數構造創建更靈活
/*
[]裏的內容也是或的關係
[ab] == a|b
[a-z] 任意小寫字母
[A-z] 任意大寫字母
*/
reg = /a/i;
reg = /[A-z]/
//檢查一個字符串中是否含有abc或adc或afc
reg = /a[bdf]c/
//[^ ]除了
console.log(reg.test("asckhljliu "));
字符串和正則表達式相關的方法
split()
-將一個字符拆分爲數組
-方法中可以傳遞一個正則表達式作爲參數
var result = str.split(/[A-z]/);
search()
-搜索是否含有指定內容
- 搜索到指定內容,則會返回第一次出現的索引,沒有搜到則返回-1
serch()只會查到第一個,即使設置全局匹配也沒用
str = "hello hi abc aec afc";
result = str.search(/a[bef]c/);
match()
-根據正則表達式,從一個字符串中將符合條件的內容提取出來
- 默認情況下match只會找到第一行符合要求的內容,找到以後就停止搜索
-可以設置正則表達式爲全局匹配模式
-match()會將匹配到的內容封裝到一個數組中返回
str = "1a2b3c4d5A6B";
result = str.match(/[A-z]/ig);
replace()
-可以將字符串中指定內容替換爲新的內容
-參數
1.被替換的內容可以接收一個正則表達式作爲參數
2.新的內容
result = str.replace(/a/ig,"!");
量詞
通過量詞可以設置一個內容出現的次數
量詞只對它前邊的內容起作用
{n} 正好出現n次
{m,n} 出現m-n次
+ 至少一個,相當於{1,}
* 0個或多個,相當於{0,1}
? 0個或一個,相當於{0,1};
^ 表示開頭
$ 表示結尾
reg = /^a/;//匹配開頭的a
reg = /a$/;//匹配結尾的a
如果在正則表達式中同時使用^ $則要求字符串必須完全符合正則表達式
reg = /^a$/;
console.log(reg.test("a"));
創建一個正則表達式,判斷手機號是否合法
var phone = "13931338404";
var phoneReg = /^1[3-9][0-9]{9}$/;
console.log(phoneReg.test(phone));
檢查一個字符串中是否含有 .
在正則表達式中使用\作爲轉義字符
.來表示.
\ 表示\
var reg = /\./;
console.log(reg.test("b."));
\w
- 任意字母,數字,_ [A-z0-9_]
\W
- 除了字母,數字,_
\d
- 任意的數字[0-9]
\D
- 除了數字[^0-9]
\s
- 空格
\S
- 除了空格
\b
- 單詞邊界
\B
- 除了單詞邊界
創建一個正則表達式檢查一個字符串中是否含有單詞child
reg = /\bchild\b/;
console.log(reg.test("children"));
去掉開頭的空格
str = str.replace(/^\s*/,"");
去掉結尾的空格
str = str.replace(/\s*$/,"");
去掉開頭和結尾的空格
str = str.replace(/^\s*|\s*$/g,"");