天天看點

JavaScript學習——正規表達式

正規表達式

正規表達式用于定義一些字元串的規則,計算機可以根據正規表達式來檢查一個字元串是否符合規則,或者将字元串中符合規則的内容提取出來。

一、建立正規表達式對象

文法一:var 變量 = new RegExp(“正規表達式”,“比對模式”);

文法二:var 變量 = /正規表達式/比對模式;

  • 比對模式:

    i --> 忽略大小寫

    g -->全局比對模式

  • 使用test()方法檢查字元串是否符合規則
var reg2 = /a/;  //比對字元串中有沒有a
document.write(reg2.test("a"));  //true
           

二、正規表達式的文法

| 表示或,[]中的内容也表示或
	a或b或c:  a | b | c  ,[abc] 
	任意小寫字母:[ a-z ]
	任意字母:[ A-z ]
	任意數字:[0-9]
	abc或adc或aec:a[ bde ]c
	
[^ ]表示除了
	除了數字:[^0-9]
	
量詞,隻對前面的一個内容起作用
	{}
		a連續出現n次:a{n}
		a出現m-n次:a{m,n}
		a出現m次以上:a{m}
	+ 至少出現一次 == {1,}
		a出現至少一次:a+
	* 0次或多次 == {0,}
	? 0次或一次 == {0,1}
		a出現0次或一次:a?
		
^ 表示開頭
	以a開頭:/^a/
$ 表示結尾
	以a結尾:/a$/
	
. 表示任意字元

\w 表示任意字母、數字、_
\W 除了字母、數字、_
\d 表示任意數字
\D 表示除了任意數字
\s 表示空格
\S 表示除了空格
\b 單詞邊界,辨別獨立的單詞
	查找有沒有單詞child: / \bchild\b / 
\B 除了單詞邊界
           

正則文法:https://www.runoob.com/jsref/jsref-obj-regexp.html

三、支援正規表達式的String方法

split()

可以向split()方法傳遞一個正規表達式作為參數,split()方法會根據正規表達式的規則去拆分字元串,并放在數組中傳回。

var str = "1a2b3c4d5F6E7O8";
document.write(str+"<br>"); //1a2b3c4d5F6E7O8
str = str.split(/[A-z]/);
document.write(str); //1,2,3,4,5,6,7,8
           

search()

可以向search()方法傳遞一個正規表達式作為參數,search()會在字元串中尋找符合規則的内容,并傳回其第一次出現的位置索引

search()隻能查找第一個符合規則的内容,設定g也沒用

var str = "hello hello world";
//在字元串str中尋找e
document.write(str.search(/e/g)); //1
           

match()

可以向match()方法傳遞一個正規表達式作為參數,match()方法會在字元串中尋找一個或多個符合規則的内容,并将這些内容放在數組中傳回。

預設情況下,match()方法找到第一個符合規則的内容後就不再檢索,如果想要傳回所有符合規則的内容,就将比對模式改為g(全局檢索模式)。

var str = "hello hello world";
//尋找字元串str中屬于a-l的内容
document.write(str.match(/[a-l]/g));//h,e,l,l,h,e,l,l,l,d
           

replace()

replace()方法可以替換指定内容,預設替換第一個符合規則的内容

參數一:要替換的内容,可以是一個字元串,也可以是一個正規表達式

參數二:新内容

var str = "hello hello world";
//尋找l,替換為¥
document.write(str.replace(/l/g,"¥")); //he¥¥o he¥¥o wor¥d
           

練習

1.去除字元串中的空格

var str2 = "          he    ll   o          ";
console.log(str2); //          he    ll   o          
//去除所有空格
var result = str2.replace(/\s/g,""); //hello
//去除前面的空格
result = str2.replace(/^\s*/,""); //he    ll   o          
//去除後面的空格
result = str2.replace(/(\s*)$/,""); //          he    ll   o
console.log(result);
           

2.郵件正則

var reg = /^\w+@[a-z0-9]+\.[a-z]{2,5}$/;
document.write(reg.test("[email protected]")); //true