初識:
正規表示式的作用:匹配特殊字元或者有特殊搭配原則的字元的最佳選擇
//建立方式:
//1. var reg=/abc/mgi;
//2. var reg1=regexp("abc","mgi");
正規表示式的三個屬性:
g:全域性匹配
i:忽視大小寫
m:執行多行匹配
/^a/:(匹配以a開頭的a)
//關於屬性 m
var reg=/^a/gm;
var str="abcde\na"; //加上m屬性後可以匹配到兩個a12
3reg.text(); 匹配字串中是否有相同順序的字元
str.match() 將匹配相同的字串全部列印出來
表示式:
var reg=/[範圍]/g;
//eg:[0123]範圍是:0,1,2,3 叫表示式,乙個代表一位 此處表示匹配三位 從匹配完的下一位開始看
// [0-9a-z]都可以 注意:空格等字元都可以作為有效的範圍
var reg=/[1234567890][1234567890][1234567890]/g;
var str="hello9899world1212hi14213i3i3i3";
var reg=/[ab][cd][d]/g; //注意:不可以有任意多餘的空格
eg:var reg=/[ab] [cd] [d]/g; 這樣寫結果為:null
var str="abcd"; //結果:"bcd"被匹配出來
[^a](匹配非a)
//例1.
var reg=/[^a][^b]/g;
var str="ab1cb";
//例2.
var reg=/[^a] [^b]/g;
var str="ab 1cb";
var reg=/(abc|bcd)/g; //匹配abc 或bcd
元字元:
//可以在表示式裡面寫多個元字元;
\w===[0-9a-z_]
\w===[^\w]
\d===[0-9]
\d===[^\d]
\s===[\t\n\r\v\f ]
//查詢空白字元 (空格符 , tab\t, 回車\r, 換行\n, 垂直換行符\v, 換頁符\f)
\s===[^\s]
\b===單詞邊界
\b===非單詞邊界
var reg=/\babc\b/g;
var str="hello abc world"; //結果["abc"]
\tvar reg=/\ta/g;
var str="hello abcworld";
//var str="hello\tabcworld"; //匹配結果都為:[" a"]
\u***x //(查詢以十六進製制數***x規定的 unicode 編碼可以匹配漢字 範圍\u0000~\uffff)
.===[^\r\n]
//乙個可以包含一切字元的
var str=/[\d\d]/g;
量詞:原則:貪婪匹配 (非貪婪匹配 在量詞的後面加乙個? 例如:n+?)
n+ //可以出現1~無數次 n 為乙個變數
n*
var reg=/\w*/g;
var str="abc" //結果:["abc", ""]
//原因 當匹配上"abc"後游標在c的後面 全域性匹配 所以就再匹配出""
var reg=/\d*/g;
var str="abc" //結果: ["", "", "", ""]
n? n //x個x個匹配
n //區間 x~y 貪婪匹配原則(n)能4個匹配就不會3個匹配!!!
n //x~正無窮
var reg=/\w/g; //!!注意此處是\w匹配
var str="aaaaaaaaaaaa" //結果:["aaa", "aaa", "aaa", "aaa"]
/ab$/ (已b結尾的)
//檢驗乙個字串首尾都有數字
var reg =/^\d[\s\s]*\d$/g;
正規表示式上的方法:
text();
exec();
var reg=/ab/g; //沒有g的時候游標會一直再0的位置,不會向下便利
var str="abab";
console.log(reg.lastindex,reg.exec(str)); 記錄游標當前所處的位置
console.log(reg.lastindex,reg.exec(str));
console.log(reg.lastindex,reg.exec(str));
console.log(reg.lastindex,reg.exec(str));
console.log(reg.lastindex,reg.exec(str));
var str="aabb"; //匹配 aabb 形式
var reg=/(\w)\1(\w)\2/g; //(\w)子表示式,\1反向引用第乙個子表示式,\2反向引用第二個系表示式
console.log(reg.exec(str)); //
字串上的方法:
match(); 匹配多個必須加上條件
replace(); 只能匹配乙個
var str="aabb"; //匹配 aabb 形式 以bbaa形式輸出
var reg=/(\w)\1(\w)\2/g;
console.log(str.replace(reg,"$2$2$1$1")); //結果:bbaa 後面內容用字串包裹起來
//$2 第二個子表示式的內容 $1 第乙個子表示式的內容
//例1. 將the-first-name 這種形式的字串轉換為 thefirstname
var reg=/-(\w)/g;
var str = "the-first-name";
console.log(str.replace(reg,function($,$1)))
正向預查:
(?=n)
(?!=n)
//例 1.選出a的字串 a的限定條件後面緊跟乙個b(但是選擇輸出時不能輸出b)
var str="abaaaaa";
var reg=/a(?=b)/g; //結果 "a" 只選取出乙個字串 ["a"]
練習://例1.
var str="aa\\aa\\aa"; //正規表示式匹配\ ? * 等要加轉意符號
var reg=/\\/g; 結果:["\", "\"]
//例2.字串去重
var str="aaaaaaaaabbbbbbcccc";
var reg=/(\w)\1*/g;
console.log(str.replace(reg,"$1")); //結果:abc
//例3.將下列字串轉換為100.000.000 每隔三個打乙個點
var str="100000000"; 前面是非單詞邊界,從後往前查,查3的位數個
var reg=/(?=(\b)(\d)+$)/g;
console.log(str.replace(reg,".")); //結果:100.000.000
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...