語(yǔ)法
/pattern/modifiers; //modifiers: g全局匹配,i敏感選擇器(區(qū)分大小寫(xiě))
var reg = /a/g
eg:
str = "Please visit Microsoft!";
var n = str.replace(/MICROSOFT/i, "W3Schools"); //Please visit W3Schools
eg:
str = "Please visit Microsoft and Microsoft!";
var n = str.replace(/Microsoft/g, "W3Schools"); //Please visit W3Schools and W3Schools
支持正則表達(dá)式字符串中的方法
test()
檢索字符串荤傲,看是否有指定的值,返回true或false
var reg = /l/g;
var a = "hello world";
reg.test(a); //true
//test() 只要字符串中的一部分符合要求
exec()
檢索字符串中指定的值颈渊,返回值遂黍,并指明其下標(biāo)
var reg = /l/g;
var a = "hello world";
reg.exec(a); // ["l", index: 2, input: "hello world"]
search()
索引指定的值,返回其下標(biāo)
var reg = /l/g;
var txt = "hello word";
txt.search(reg)俊嗽; //2
//注釋:如果沒(méi)有找到任何匹配的子串雾家,則返回 -1
replace()
替換與正則匹配的值
var reg = /l/g;
var txt = "hello word";
txt.replace(reg,"*"); //he**o word
match()
返回所有與正則匹配的值
var reg = /l/g;
var txt = "hello word";
txt.match(reg); // ["l", "l"]
split()
通過(guò)指定的值把字符串分隔成數(shù)組
var reg = /l/g;
var txt = "hello word";
txt.split(reg); // ["he", "", "o word"]
備選字符集:規(guī)定某一位字符的備選字符列表
特點(diǎn):必須且只能多選一
eg:上天,上海
上[天海]
如果備選字符的unicode號(hào)連續(xù)
//一個(gè)數(shù)字
[0-9]
//一個(gè)小寫(xiě)字母
[a-z]
//一個(gè)大寫(xiě)字母
[A-Z]
//一位數(shù)字、字母或下劃線
[0-9a-zA-Z_]
預(yù)定義字符集:針對(duì)常用的備選字符集提供的簡(jiǎn)化符號(hào)
//一位數(shù)字
[0-9] --> \d
//一位數(shù)字绍豁、字母或下劃線
[0-9a-zA-Z_] -->\w
//1位空字符:換行符,制表符,空格,回車,
\s
//邊界
\b
// 除空格芯咧、換行外,其余所有字符
.
量詞:規(guī)定字符集出現(xiàn)的次數(shù)
確定數(shù)量:
{m,n} -->至少m個(gè)竹揍,最多n個(gè)
{m,} -->m個(gè)以上
{m} -->必須m個(gè)
不確定數(shù)量:
? -->0或1個(gè)
+ -->1個(gè)以上
* -->多個(gè)或沒(méi)有
選擇和分組
//選擇
| 讀作"或"
//分組
()
手機(jī)號(hào)
手機(jī)號(hào):+86或0086 可有可無(wú)敬飒,最多1個(gè)
空字符 不限制個(gè)數(shù)
1
3,4,5,7,8 選其一
9位數(shù)字
(\+86|0086)?\s*1[34578]\d{9}
指定匹配位置
開(kāi)頭和結(jié)尾:^開(kāi)頭的xxx;$結(jié)尾的xxx
何時(shí)使用:僅匹配開(kāi)頭的規(guī)則和結(jié)尾的規(guī)則時(shí)使用
固定搭配:^正則表達(dá)式$-->表示從頭到尾完整匹配
何時(shí)使用:只要驗(yàn)證時(shí)芬位,必須前加^,后加$无拗!
eg:
//匹配字符串開(kāi)頭的所有空字符
^\s+
//匹配字符串結(jié)尾的所有空字符
\s+$
排除
//除了abc
[^abc]
實(shí)例
關(guān)鍵詞過(guò)濾
//將句子里的北京和淘寶替換成"***"
//HTML
<textarea id="txt1" name="" cols="30" rows="10">
</textarea>
<input type="button" value="過(guò)濾" id="btn" />
<textarea id="txt2" name="" cols="30" rows="10">
</textarea>
//JS
window.onload = function(){
var txt1 = document.getElementById("txt1");
var txt2 = document.getElementById("txt2");
var btn = document.getElementById("btn");
btn.onclick=function(){
var value = txt1.value;
var reg = /淘寶|百度/g;
txt2.value = value.replace(reg,"***")
}
}
過(guò)濾HTML標(biāo)簽
var reg =/<[^<>]+>/g;
txt2.value = txt1.value.replace(reg,"");
//HTML
<input type="text" id="input"><span id="span"></span>
//JS
var reg = /^\w+@[a-z0-9]+\.com$/g;
var input = document.getElementById("input");
var span = document.getElementById("span");
input.onchange = function(){
var value = this.value;
if(value.match(reg)){
span.innerHTML = "通過(guò)";
}else{
span.innerHTML = "錯(cuò)誤,請(qǐng)重新輸入";
}
}
數(shù)字每隔3為加逗號(hào)‘,’
var str = '1000000000';
var reg = /(?=(\B)(\d{3})+$)/g;
var strNum = str.replace(reg, ',');