正則表達(dá)式
正則表達(dá)式:是由一個(gè)字母數(shù)字和一些特殊符號(hào)組成的描述字符模式的對(duì)象
一锨络、功能
1、模式匹配 2毡代、文本檢索 3、替換
二为居、創(chuàng)建
1.通過RegExp()構(gòu)造函數(shù)來創(chuàng)建(顯式創(chuàng)建)
var reg = new RegExp("表達(dá)式"[,修飾符]);
var reg = new RegExp("\\d{3}") //匹配三個(gè)數(shù)字 第一個(gè)\是轉(zhuǎn)義第二個(gè)\斜杠
2、通過字面量(直接量)方式來創(chuàng)建(隱式創(chuàng)建)------常用
var reg = /表達(dá)式/[修飾符]杀狡;
var reg = /\d{3}/;
這含義上不一樣蒙畴,顯示創(chuàng)建的是實(shí)例對(duì)象,隱式創(chuàng)建的是單個(gè)對(duì)象呜象。
三膳凝、正則表達(dá)式的方法:
1、test()
功能:用于檢測(cè)是否于正則匹配恭陡。
返回:布爾值蹬音,true匹配,false不匹配
語法:reg.test(檢測(cè)的內(nèi)容)
2子姜、exec()
功能:用于檢測(cè)是否于正則匹配祟绊。
返回:如果匹配返回?cái)?shù)組,不匹配返回null
語法:reg.exec(檢測(cè)的內(nèi)容)
說明:
第一個(gè)數(shù)組元素存放的匹配的內(nèi)容
第二哥捕、三……數(shù)組元素存放的是分組所匹配的內(nèi)容
支持兩個(gè)屬性:
index:匹配項(xiàng)的索引位置
input:
四牧抽、修飾符:
i 忽略大小寫
m 多行匹配
g 全文匹配
var reg = /[a-z]/gi; //匹配所有字母遥赚,忽略大小寫
五扬舒、元字符(字符類):具有特殊含義的字符
[……] 匹配括號(hào)內(nèi)的任意一個(gè)字符 [0-9a-zA-Z]
[^……] 匹配除了括號(hào)內(nèi)的任意字符 [^0-9]
\d 數(shù)字
\D 非數(shù)字
\w 字母數(shù)字下劃線
\W 非字母數(shù)字下劃線
\s 空白字符(空格 制表符)
\S 非空白字符
. 除了換行符以外的任意字符
\n 換行符
\r 回車符
\t 制表符
限定符
^xx 以xx開始
xx$ 以xx結(jié)束
六、重復(fù):設(shè)置匹配的次數(shù)
{n} 匹配前一項(xiàng)n次
{n,m} 匹配前一項(xiàng)n到m次
{n,} 匹配前一項(xiàng)n到多次
* 匹配前一項(xiàng)0到多次
凫佛? 匹配前一項(xiàng)0到1次
+ 匹配前一項(xiàng)1到多次
七讲坎、轉(zhuǎn)義字符:將特殊符號(hào)恢復(fù)成它字面本身意思
通過:\ 這個(gè)符號(hào)來進(jìn)行轉(zhuǎn)義
需要轉(zhuǎn)義的符號(hào) : [ ] { } ( ) . ? * + ^ $ \ /
選擇: | 或者
分組:()可以將多個(gè)匹配項(xiàng)組合為一個(gè)整體
八、單字節(jié): 字符串對(duì)象.replace(新節(jié)點(diǎn)愧薛,舊節(jié)點(diǎn))
var str = "as df1d f14r4 g421g 5r4";
console.log(str.replace(/\s/g,"")); //asdf1df14r4g421g5r4 \s匹配空格
console.log(str.match(/\d+/g)); //["1","14","4","421","5","4"]
console.log(str.match(/\d/g)); //["1", "1", "4", "4", "4", "2", "1", "5", "4"]
console.log(str.split(/\s+/g)); //["as", "df1d", "f14r4", "g421g", "5r4"]
小案例
//html
<input type="text" id="txt"><span></span>
//js
var txt = document.getElementById('txt');
var span = document.getElementsByTagName('span')[0];
txt.oninput = function(){
var reg1 = /\d/; //有數(shù)字
var reg2 = /[a-z]/; //有字母
var reg3 = /[^a-zA-Z0-9]/; //不含大小寫字母數(shù)字的任意字符
var s=0;
if(reg1.test(txt.value)){
s++; //若果有數(shù)字 s+1
}
if(reg2.test(txt.value)){
s++; //若果有字母 s+1
}
if(reg3.test(txt.value)){
s++; //若果有不含大小寫字母數(shù)字的任意字符 s+1
}
switch(s){
case 1:
span.innerHTML = "弱";
break;
case 2:
span.innerHTML = "中";
break;
case 3:
span.innerHTML = "強(qiáng)";
break;
default:
span.innerHTML = "";
}
}