定義:專門規(guī)定字符串中【字符串的規(guī)律】
(1)知識點
- (1.1)備選字符集
- (1.2)預定義備選字符集
- (1.3)量詞:字符集出現(xiàn)的次數(shù)
- (1.4)選擇和分組
- (1.5)轉義
- (1.6)匹配指定位置
- (1.7)預判
- (1.8)漢字備選字符集
(2)細化
- (2.1)備選字符集:必須且只能多選一
<pre>
一組數(shù)字:[0-9]
一組小寫字母:[a-z]
一組大寫字母:[A-Z]
</pre>
- (2.2)預定義備選字符集
<pre>
\d --> [0-9]
\w --> [0-9a-zA-Z_]
\s --> 所有空字符,比如:空格 制表符 換行
\D --> 非【\d】,除了數(shù)字
. --> 除了換行和回車后的任意字符
</pre>
- (2.3)量詞:字符集出現(xiàn)的次數(shù)
<pre>
{min,max} --> 從某個值到某個值
{min,} --> 大于等于某個值
{n} --> 固定數(shù)量
? --> 可有可無,最多一個
--> 可有可無,數(shù)量不限
--> 至少一個,數(shù)量不限
</pre>
(2.4)選擇和分組
選擇:<pre>
或 --> |
</pre>分組:
<pre>
分組 --> ( )
</pre>(2.5)轉義
<pre>
轉義 -->
</pre>
- (2.6)匹配指定位置
<pre>
開頭匹配 --> ^
結尾匹配 --> $
開頭或者結尾匹配 --> ^xx | xx$ (中間有|)
完全匹配 --> ^xxx$ (中間沒有|)
單詞匹配 --> \bxxx\b
</pre>
(2.7)預判:在正式匹配前,先大概預判整個字符串的規(guī)則,多用于排除法
4大類:數(shù)字,小寫字母,大寫字母,特殊符號(2.8)漢字備選字符集:[\u4e00-\u9fa5]
jQuery插件中已經(jīng)封裝了大量現(xiàn)成的正則表達式,比如電子郵件,html標簽,url地址
(3)方法
定義 RegExp:
var patt = new RegExp("e");
(3.1)test() 方法檢索字符串中的指定值。返回值是 true 或 false。
test() 方法檢索字符串中的指定值。返回值是 true 或 false。(3.2)exec() 方法檢索字符串中的指定值。返回值是被找到的值。如果沒有發(fā)現(xiàn)匹配,則返回 null。
var patt = new RegExp("e","g");
g:您可以向 RegExp 對象添加第二個參數(shù),以設定檢索
- (3.3)compile() 方法用于改變 RegExp。
** Tips:做驗證:都要前加^,后加$ **
(4)實踐
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>正則表達式</title>
</head>
<body>
</body>
</html>
<script type="text/javascript">
init();
function init() {
phoneNum();
}
/**
* 手機號:
* +86或0086 整體可有可無,最多1次
* 數(shù)量不限個空字符
* 1
* 在34578中選其一
* 9位數(shù)字
* (\+86|0086)?\s*1[34578]\d{9}
*/
function phoneNum(){
/**
* 手機號碼匹配
* 有開頭和結尾的
*/
var p1 = new RegExp(/^1[34578]\d{9}$/);
/**
* 手機號碼匹配
* 沒有開頭和結尾的
*/
var p2 = new RegExp(/1[34578]\d{9}/);
// 是否匹配
console.log(p1.test("134"));//false
console.log(p1.test("13122222222"));//true
console.log(p1.test("a13122222222b"));//false
console.log(p2.test("a13122222222b"));//true
// 找出匹配內(nèi)容
console.log(p2.exec("a13122222222b"));//13122222222
}
</script>
RegExp:http://www.w3school.com.cn/js/js_obj_regexp.asp
RegExp 對象:http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp