1. 程式人生 > 其它 >JS學習筆記十一-正則表示式

JS學習筆記十一-正則表示式

技術標籤:三週學習JS正則表示式

一、正則表示式

正則表示式用於表達一些字串的規則,計算機可以根據正則表示式,來檢查一個字串是否符合規則,或則將字串中符合規則的內容提取出來。

1.建立正則表示式的物件

語法:var 變數=new RegExp("正則表示式",“匹配模式”)

var reg=new RegExp();

在建構函式中可以傳遞一個匹配模式作為第二個引數 可以是:i 忽略大小寫 g 全域性匹配模式

2.檢查字串是否符合正則表示式的規則

(1)使用test()方法可以用來檢查一個字串是否符合正則表示式的規則,如果符合則返回true,否則返回false。

var reg=new RegExp("a");
var str="a";
var result=reg.test(str);
console.log(result);

(2)var reg=new RegExp(“a”);這個正則表示式可以來檢查一個字串中是否含有a,嚴格區分大小寫,A不行,可以用匹配模式的引數有i來忽略大小寫。

3.使用字面量來建立正則表示式

語法:var 變數=/正則表示式/匹配模式
使用字面量的方式建立更加簡單,使用建構函式建立更加靈活。
(1)建立一個正則表示式,來檢查一個字串中是否有a或者b,使用 | 表示或者的意思

var reg=
/a|b/;//有a或者有b的正則表示式

(2)建立一個正則表示式來檢查一個字串中是否字母
[ ]裡的內容也是或的關係:[ab]==a|b

[a-z] 任意的小寫字母a到z
[A-Z] 任意的大寫寫字母A到Z
[A-z] 任意字母
[^ ab]除了ab以外的
[0-9] 任意數字
[^0-9] 除了數字

(3)檢查一個字串中是否含有abc或adc或aecreg=/a[bde]c/

二、字串和正則表示式相關的方法

1.split()方法:

(1)可以將一個字串拆分為一個數組
(2)方法中可以傳遞一個正則表示式作為引數,這樣方法將會根據正則表示式去拆分字串。
(3)這個方法即使不指定全域性匹配,也會全都拆分

var str="1a2b3d4h5l";
var result=str.split(/[a-z]/);//根據字母拆分字串
console.log(result);//1,2,3,4,5

2.search()方法

(1)可以搜尋字串中是否含有指定內容。
(2)如果搜尋到指定內容,則會返回第一次出現的索引,如果沒有搜尋到則返回-1.
(3)可以接受一個正則表示式作為引數,然後會根據正則表示式去檢索字串。
(4)serach()只會查詢第一個,即使設定全域性匹配也沒用
在這裡插入圖片描述

3.match()方法

(1)可以根據正則表示式,從一個字串中將符合條件的內容提取出來。
(2)預設情況下我們的math只會找到第一個符合要求的內容,找到以後就停止檢索,我們可以設定正則表示式為全域性匹配模式,這樣就會匹配到所有的內容。
(3)可以為一個正則表示式設定多個匹配模式,且順序無所謂
(4)match()會將匹配到的內容封裝到一個數組中返回,即使只查詢到一個結果

var str="1a2b3d4h5l";
var result=str.match(/[A-z]/g);//全域性查詢
var result=str.match(/[A-z]/ig);//全域性查詢,忽略大小寫
console.log(result);//a,b,d,h,l

4.replace()方法

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

var str="1a2b3d4h5l";
result=str.replace("/a-z/ig","@[email protected]");//替換所有的字母

三、正則表示式語法

1.量詞

(1)通過量詞可以設定一個內容出現的次數
(2)/x{y}/ 表示查詢連續y個在一起的x。
(3)量詞在對前邊的一個內容起作用
(4){m,n}:出現m到n次
(5){m,}:出現m次以上
(6)+ 至少一個,相當於{1,}
(7)* 0個或多個,相當於{0,}
(8)?0個或1個,相當於{0,1}
(9)^a 表示以a開頭
(10)a$ 表示以a結尾
(11)如果在正則表示式中同時使用^ 則 要 求 字 符 串 必 須 完 全 符 合 正 則 表 達 式 。 / a 則要求字串必須完全符合正則表示式。/^a /a/
(12)以a開頭或者以a結尾/^a|a$/

2.手機號碼

  1. 以1開頭 ^1
  2. 第二位3-9任意數字 [3-9]
  3. 三位以後任意數字9個 [0-9]{9}$
var phoneReg=new RegExp();
		phoneReg=/^1[3-9][0-9]{9}$/;
		var phoneStr="15927212715";
		console.log(phoneReg.test(phoneStr));

3.檢查一個字串中是否含有 .

(1). 表示任意字元
(2)在正則表示式中使用 \ 作為轉義字元:\ . 來表示.
(3)\\表示
(4)注意:使用建構函式建立正則表示式時,由於它的引數是一個字串,而 \ 是字串中轉義字元,如果要使用 \ 則需要使用 \ 來代替

\w 表示任意字母、數字、下劃線 [A-z0-9_]
\W 除了任意字母、數字、下劃線 [^A-z0-9_]
\d 任意數字[0-9]
\D 除了數字[^0-9]
\s 空格
\S 除了空格
\b 單詞邊界
\D 除了單詞邊界

(5)接收一個使用者的輸入
//去除掉字元中前後的空格
//去除空格就是使用""來代替空格

var str="    hello     ";
console.log(str);
str=str.replace(/\s/g,"");//去除掉字元中前後的空格
str=str.replace(/^\s*/g,"");//去除開頭的空格
str=str.replace(/\s*$/g,"");//去除結尾的空格
str=str.replace(/^\s*|\s*$/g,"");//去除開頭和結尾的空格

4.電子郵件

(1)組成:任意字母數字下劃線 . 任意字母數字下劃線 @ 任意字母數字 . 任意字母(2-5位).任意字母(2-5位)
(2)/^\w{3,} (.\w+)*@ [A-z0-9]+ (.[A-z]{2,5}){1,2}$/