正則驗(yàn)證
正則表達(dá)式
Regular Ecpression 簡寫 regex/regexp/RE
1.描述了一種 字符串的 特征模型
2.其返回值 是一個(gè) 對象 通過該對象提供的方法和屬性 能夠?qū)ψ址M(jìn)行匹配處理
3.查找字符串
4.既可以精準(zhǔn)查找 也可以 模糊匹配
一、正則表達(dá)式 的聲明
1.通過構(gòu)造函數(shù)的形式 來創(chuàng)建 表達(dá)式
使用字面量來創(chuàng)建正則表達(dá)式會更簡單妄呕,而用構(gòu)造函數(shù)創(chuàng)建正則表達(dá)式會更靈活懒闷。
語法:var 變量 = /正則表達(dá)式/匹配模式
返回值 為一個(gè)對象 擁有兩個(gè)方法
reg.test(要查詢的字符串)
返回值為boll類型 ture/false
reg.exec(要查詢的字符串)
返回值 數(shù)組
第一個(gè)元素 是匹配到的字符串的首字符
第二個(gè)元素 是該字符串的首字符的下標(biāo)
第三個(gè)元素 是輸入的字符串
正則表達(dá)式 既可以 制定規(guī)則 也可以直接進(jìn)行查找
var reg = /a/i;
var str = "A";
var res = reg.test(str);
console.log(res); // true
2.通過 字面量的形式來寫 表達(dá)式
兩個(gè)參數(shù) /參數(shù)1/參數(shù)2
參數(shù)一 匹配的特征字符串
參數(shù)二 修飾字符串
二贪庙、正則表達(dá)式 的書寫規(guī)范
匹配的特征字符串 書寫在 / / 內(nèi)
可以精準(zhǔn)匹配
var str1 = '3d354af45f534af354fda354af';
var reg2 = /\w/;
console.log(reg2.test(str1));
console.log(reg2.exec(str1));
//模糊匹配 通過元字符
// var reg1 = /\D/;
/*
常用 元字符
\d 一個(gè)數(shù)字字符
\D 一個(gè)非數(shù)字字符
\w 一個(gè) 數(shù)字 字母 下劃線 字符
\W 一個(gè) 非數(shù)字 字母 下劃線 字符
\s 一個(gè)空白符號
\S 一個(gè)非空白符號
或 | 3|4 /\d|\s/
任意[] [abc] abc 中任何一個(gè)元素 被匹配
[a-z] 匹配a-z 26小寫字母
[A-Z] 26個(gè)大寫英文字母
[A-z] 按照ASCII碼 從大寫A~小寫z 中間所有的字符 包括 ASCII 91~96 的字符
[A-Z][a-z] 26個(gè)英文字母
[Az-] 參照 [abc]
[\u4e00-\u9fe5] 中文區(qū)間 Unicode編碼 表示 中文編碼
*******注意 正則表達(dá)式 如果是一個(gè)區(qū)間的話 先后順序按照 ASCII碼 升序排布
^ 非 [^abc] 不包含abc 返回符合條件的第一個(gè)字符
開頭 ^\d 必須以數(shù)字開頭 (必須寫在表達(dá)式開頭)
寫在中括號里面 代表 不包含 某個(gè)元素 匹配除了目標(biāo)字符外的所有字符
寫在表達(dá)式開頭 代表 必須以目標(biāo)條件或者字符 開頭
必須以數(shù)字結(jié)尾
量詞的控制
X{n} 匹配連續(xù) n 個(gè) X
a{6} a連續(xù)出現(xiàn)6次
\d{6} 連續(xù)6個(gè)數(shù)字
X{n,m} 匹配最小出現(xiàn)n 次 最大出現(xiàn) m次
匹配的時(shí)候 滿足最小條件 開始匹配
到最大條件 當(dāng)次 匹配結(jié)束
X{n,} 匹配最小出現(xiàn) n次 最多無上限
模糊個(gè)數(shù)
X? 匹配 0個(gè) 或者 1個(gè)
等同于{0,1}
X* 匹配 0個(gè) 或者連續(xù)多個(gè) 正則表達(dá)式貪婪模式
等同于{0,}
X+ 匹配 1個(gè) 或者連續(xù)多個(gè)
等同于{1,}
X*? 非貪婪模式
///////注意
{n,m}? 只要有? 代表 當(dāng)前匹配 盡量按照最小要求匹配
{n,m}? 盡量匹配 n 個(gè)字符 但是也可以 最多重復(fù) m 次
?? 盡量匹配 允許不滿足條件 但是 滿足條件 最多匹配一次 相當(dāng)于 {0,1};
+? 盡量匹配 1 次 但是也可以匹配任意次 相當(dāng)于 {1,}?
*? 盡量不匹配 也可以匹配任意次 相當(dāng)于{0,}?
/ 代表 字符 /
g 全局 寫在//最后面 /\d/g 在全局范圍內(nèi) 搜索 符合要求的字符
沒有g(shù) 不管是 exec() 還是 match() 都返回 匹配到的第一個(gè)字符
有 g exec() 返回符合要求的 第一個(gè)字符
match() 返回一個(gè)數(shù)組 數(shù)組內(nèi)包括 所有符合要求的字符
有一個(gè)lastIndex屬性 自動(dòng)查找下一個(gè)