正則表達式:用於匹配規律規則的表達式,正則表達式最初是科學家對人類神經系統的工做原理的早期研究,如今在編程語言中有普遍的應用。正則表一般被用來檢索、替換那些符合某個模式(規則)的文本。 正則表達式是對字符串操做的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個「規則字符串」,這個「規則字符串」用來表達對字符串的一種過濾邏輯。javascript
元字符 | 說明 |
---|---|
\d | 匹配數字 |
\D | 匹配任意非數字的字符 |
\w | 匹配字母或數字或下劃線 |
\W | 匹配任意不是字母,數字,下劃線 |
\s | 匹配任意的空白符 |
\S | 匹配任意不是空白符的字符 |
. | 匹配除換行符之外的任意單個字符 |
^ | 表示匹配行首的文本(以誰開始) |
$ | 表示匹配行尾的文本(以誰結束) |
限定符 | 說明 |
---|---|
* | 重複零次或更屢次 |
+ | 重複一次或更屢次 |
? | 重複零次或一次 |
{n} | 重複n次 |
{n,} | 重複n次或更屢次 |
{n,m} | 重複n到m次 |
[] 字符串用中括號括起來,表示匹配其中的任一字符,至關於或的意思
[^] 匹配除中括號之內的內容
\ 轉義符
| 或者,選擇二者中的一個。注意|將左右兩邊分爲兩部分,而無論左右兩邊有多長多亂
() 從兩個直接量中選擇一個,分組
eg:wh(a|e)y匹配whay和whey
[\u4e00-\u9fa5] 匹配漢字
複製代碼
驗證手機號:java
^\d{11}$
複製代碼
驗證郵編:正則表達式
^\d{6}$
複製代碼
驗證郵箱 xxx@why.cn:編程
^\w+@\w+\.\w+$
複製代碼
方式1:bash
var reg = new Regex('\\d', 'i');
var reg = new Regex('\\d', 'gi');
複製代碼
方式2:編程語言
var reg = /\d/i;
var reg = /\d/gi;
複製代碼
標誌 | 說明 |
---|---|
i | 忽略大小寫 |
g | 全局匹配 |
gi | 全局匹配+忽略大小寫 |
// 匹配日期
var dateStr = '2019-04-10';
var reg = /^\d{4}-\d{1,2}-\d{1,2}$/
console.log(reg.test(dateStr));
複製代碼
// 1. 提取工資
var str = "張三:1000,李四:5000,王五:8000。";
var array = str.match(/\d+/g);
console.log(array);
// 2. 提取email地址
var str = "123123@xx.com,fuck@valuedopinions.cn 286669312@qq.com 二、emailenglish@emailenglish.englishtown.com 286669312@qq.com...";
var array = str.match(/\w+@\w+\.\w+(\.\w+)?/g);
console.log(array);
// 3. 分組提取
// 3. 提取日期中的年部分 2015-5-10
var dateStr = '2016-1-5';
// 正則表達式中的()做爲分組來使用,獲取分組匹配到的結果用Regex.$1 $2 $3....來獲取
var reg = /(\d{4})-\d{1,2}-\d{1,2}/;
if (reg.test(dateStr)) {
console.log(RegExp.$1);
}
複製代碼
// 1. 替換全部空白
var str = " 123AD asadf asadfasf adf ";
str = str.replace(/\s/g,"xx");
console.log(str);
// 2. 替換全部,|,
var str = "abc,efg,123,abc,123,a";
str = str.replace(/,|,/g, ".");
console.log(str);
複製代碼
var str = 'b';
// var reg = /\d/; //只要字符串中有數字,就符合要求
// var reg = /\D/; //只要字符串中有非數字,就符合要求
// var reg = /\w/; //只要字符串中有數字或者字母,或者下劃線,就符合要求
// var reg = /\W/; //只要字符串中有數字或者字母,或者下劃線,就符合要求
// var reg = /\s/; //只要字符串中有空白字符就符合要求
// var reg = /\S/; //只要字符串中有非空白字符就符合要求
// var reg = /./; //只要有非換行符就符合條件
// var reg = /^a/; //只要字符串以a開頭就符合條件
// var reg = /a$/; //只要字符串以a結尾就符合條件
// var reg = /^abc$/; //要求字符串中只能有abc
// var reg = /^\d{11}$/;//要求字符串中只能出現11次數字
// var reg = /^\d{3,}$/;//要求字符串中只能出現3次及以上的數字
// var reg = /\d{3,}/;//要求字符串中只要包含3個及以上的數字就符合條件
// var reg = /^\d{3,5}$/;//字符串中只能出現3~5次的數字
// var reg = /^\d*$/; //字符串中要麼什麼都沒有,要麼就只能是數字
// var reg = /^\d+$/; //字符串中至少一個數字
// var reg = /^\d?$/; //字符串中要麼什麼都沒有,要麼只能有一個數字
// var reg = /^[abcd]$/; //只能有一個字符,而這個字符能夠是中括號的任何一個
// var reg = /^[^abcd]$/; //只能有一個字符,而這個字符能夠不能有中括號的任何一個
// var reg = /^\.$/; // 字符串中只能有一個點
// var reg = /^a|c$/; //以a開頭獲取以c結尾
// var reg = /^wh(a|g)y$/ //whay或者是whgy
// var reg = /^[a-Z]$/; //錯誤的
// var reg = /^[a-zA-Z]$/;
// var reg = /^[A-z]$/;//大寫字母在字符集中排序更靠前
console.log(reg.test(str));
複製代碼