什麼是正規表示式
正規表示式:用於匹配規律規則的表示式,正規表示式最初是科學家對人類神經系統的工作原理的早期研究,現在在程式語言中有廣泛的應用。正則表通常被用來檢索、替換那些符合某個模式(規則)的文字。正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成乙個「規則字串」,這個「規則字串」用來表達對字串的一種過濾邏輯。
正規表示式的作用
給定的字串是否符合正規表示式的過濾邏輯(匹配)
可以通過正規表示式,從字串中獲取我們想要的特定部分(提取)
強大的字串替換能力(替換)
正規表示式的特點
靈活性、邏輯性和功能性非常的強
可以迅速地用極簡單的方式達到字串的複雜控制
對於剛接觸的人來說,比較晦澀難懂
常用元字串
元字元說明
\d匹配數字
\d匹配任意非數字的字元
\w匹配字母或數字或下劃線
\w匹配任意不是字母,數字,下劃線
\s匹配任意的空白符
\s匹配任意不是空白符的字元
.匹配除換行符以外的任意單個字元
^表示匹配行首的文字(以誰開始)
$表示匹配行尾的文字(以誰結束)
限定符限定符說明*
重複零次或更多次
+重複一次或更多次
?重複零次或一次
重複n次
重複n次或更多次
重複n到m次
其它
字串用中括號括起來,表示匹配其中的任一字元,相當於或的意思
[^] 匹配除中括號以內的內容
\ 轉義符
| 或者,選擇兩者中的乙個。注意|將左右兩邊分為兩部分,而不管左右兩邊有多長多亂
() 從兩個直接量中選擇乙個,分組
eg:wh(a|e)y匹配whay和whey
[\u4e00-\u9fa5] 匹配漢字
複製**
驗證手機號:
^\d$
複製**
驗證郵編:
^\d$
複製**
驗證郵箱 ***@why.cn:
^\w+@\w+\.\w+$
複製**
方式1:
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-\d-\d$/
console.log(reg.test(datestr));
複製**
// 1. 提取工資
var str = "張三:1000,李四:5000,王五:8000。";
var array = str.match(/\d+/g);
console.log(array);
// 2. 提取email位址
var str = "[email protected],****@valuedopinions.cn [email protected] 2、[email protected] [email protected]...";
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)-\d-\d/;
if (reg.test(datestr))
複製**
// 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$/; //要求字串中只能有abc
// var reg = /^\d\d$/; //要求字串中只能有abc
// var reg = /^\d$/;//要求字串中只能出現11次數字
// var reg = /^\d$/;//要求字串中只能出現3次及以上的數字
// var reg = /\d/;//要求字串中只要包含3個及以上的數字就符合條件
// var reg = /^\d$/;//字串中只能出現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));
複製**
重學前端系列 Javascript物件
我們可以使用getownpropertydescriptor來檢視屬性狀態 var o o.b 2 a 和 b 皆為資料屬性 object.getownpropertydescriptor o,a object.getownpropertydescriptor o,b 複製 如果想改變屬性的特徵或者...
重學前端之 關於閉包
剛開始學習前端的時候,學習閉包暈頭轉向,都不知道什麼是什麼,在接觸變成一段時間後發現因為自己基本功不紮實的原因導致基本概念不理解所以對閉包根本無法掌握,這篇文章以我自己的理解記錄一下學習對於閉包的學習歷程。區域性變數 可以簡單理解成函式內部申明的變數 全域性變數 可以簡單理解成最外層被申明的變數 複...
重學前端 2 簡單回顧css
css 文字陰影 css3 text shadow 水平位置 垂直位置 模糊距離 陰影顏色 層疊性1 含義 多種css樣式疊加,瀏覽器處理衝突的一種能力 2 原則 一般情況下,若出現樣式衝突,會按照css書寫的順序 以最後的為準,樣式不衝突,不會層疊 繼承性一般文字顏色和字型大小,font 開頭的屬...