正規表示式

2021-09-01 20:59:41 字數 3631 閱讀 1297

初識:

正規表示式的作用:匹配特殊字元或者有特殊搭配原則的字元的最佳選擇

//建立方式:

//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正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...