1. 程式人生 > >正則表示式的總結大全

正則表示式的總結大全

1.建立正則表示式的物件
//var reg = new RegExp(“正則表示式”,“匹配模式”);
Var reg = new RegExp(“a”) 檢查一個字串中是否含有a,區分大小寫的
在建構函式中可以傳遞一個匹配模式作為第二個引數,可以是 i 忽略大小寫, g 全域性匹配模式
var str = “a”
//可以使用test()方法來檢查一個字串是否符合正則表示式的規則
//如果符合則返回true,否則返回false

var result = reg.test(str);

2.上述方式有點麻煩,所以簡單的是:使用字面量的方式更加簡單,建構函式更加靈活
/*
語法:var 變數 = /正則表示式/匹配模式
*/

Var reg = new RegExp(“a’, “i”) 改寫 reg = /a/i

//建立一個字串中是否有a或b,使用 | 表示或者
reg = /a|b/;

/*建立一個字串中是否有字母
[]裡的內容也是或的關係 [ab] = a|b
[a-z]任意小寫字母
[A-Z]任意大寫字母
[A-z] 任意字母
[0-9] 任意數字
*/
reg = /[abcdefghi…]/太長了所以 /[a-z]/

//檢查一個字串中是否含有abc 或 adc 或 aec
reg = /abc|adc|aec/這麼寫有點笨 所以改寫為
reg = /a[bde]c/

/*
[^ ] 除了
*/
reg = /[^ab]/ 除了ab [^0-9]除了0-9

十三.字串和正則相關的

Var str = “1a2b3c4d5e6f”

var result = str.split(“c”);
console.log(result.length)
/*現在想根據任意字母來講字串拆分
方法中可以傳遞一個正則表示式作為引數,這樣方法將會根據正則表示式去拆分字串
/
var result = str.split(/[A-z]/);
/

search():只會查詢第一個
可以搜尋字串中是否含有指定內容
如果搜尋到指定內容,則會返回第一次出現的索引,如果沒有搜尋到返回-1
它可以接受一個正則表示式作為引數,然後會根據正則表示式去檢索字串
/
Str = “hello abc hello abc”
Result str.search(“abc”); 得到索引6
/


搜尋字串中是否含有abc 或 aec 或afc
*/
result = str.search(/a[bef]c/)

/*
match()
可以根據正則表示式,從一個字串中將符合條件的內容提取出來
預設情況下我們的match只會找到第一個符合要求的內容,找到以後就停止檢索
我們可以設定正則表示式為全域性模式,這樣就會匹配到所有內容
可以為一個正則表示式設定多個匹配模式,且順序無所謂 所有也可以是gi
match會將匹配到的內容封裝到一個數組中返回,即使只查詢到一個結果
*/
Str = “1a2b3c4d5e6f” 想提取所有的字母
Result = str.match(/[A-z]/) 現在只提取一個a 找到一個就不找了 比較懶 改為
Str.match(/[A-z]/ig)

/*replace()
可以將字串中指定內容替換為新的內容
引數:
1.被替換的內容,可以接受一個正則表示式作為引數
2.新的內容
預設只會替換第一個

建立一個正則中是否含有三個a
var reg= /aaa/;
console.log(reg.test(“aaabc”))
缺點如果想寫三千個a怎麼辦?
解決:量詞:可以設定內容出現的次數,只會他前邊的一個內容起作用
{n} 正好出現n次,
{m,n} m-n 次
{3,} 3次以上

  • 至少一個,相當於{1,}
    *0個或多個,相當於{0,}
    ?0或1個,相當於{0,1}

改:/a{3}/

//ababab
Reg = /(ab){3,}/3次以上
檢查一個字串是否已a開頭:/^a/ 匹配結尾的a: /a$/
^表示開頭
KaTeX parse error: Expected group after '^' at position 37: …符 如果在正則表示式中同時使用^̲則要求字串必須完全符合正則表示式

/^a$/ 表示只能是一個a

練習: 手機號
手機號的規則:11位 1 5601661883
1.以1開頭
2.第二位3-9任意數字
3.第三位以後任意數字,長度9位
答:/^1[3-9][0-9]{9}$/

檢查一個字串中是否含有 . =》/./
檢查\ => /\/
\w: 任意字母、數字 、下劃線 = [A-z0-9_]
\W:除了字母、數字、下劃線 =[^A-z0-9_]
\d: 數字
\D:除了數字
\s:空格
\S: 除了空格
\b:單詞邊界 例如: 是否含有child => /\bchild\b/
\B

去除字串中的空格
思路: 用””替換
Str.replace(/\s/g,””)=> 所有的空格,前後中都被去掉了
去除前邊的空格: /^\s*/
去除結尾的空格: /\s*KaTeX parse error: Expected group after '^' at position 17: … 整合去除開頭和結尾的空格:/^̲\s*|\s*/g
*/
/*電子郵件的正則:[email protected]
1.任意的字母數字下劃線 .任意字母數字下劃線 @ 任意字母數字 .任意字母2-5位 .任意字母2-5位可選的

*/

\w{3,} (.\w+)* @ [A-z0-9]+ (.[A-z]{2,5}){1,2}

var reg = "[email protected]" , result = /\w{3,}(.\w+)*@[A-z0-9]+(.[A-z]{2,5}){1,2}/ ; console.log(result.test(reg))