js正則表達(dá)式的使用詳解
js中的正則表達(dá)式比起C#中的正則表達(dá)式要弱很多,但基本夠用了
1定義正則表達(dá)式
2關(guān)于驗(yàn)證的三個(gè)這則表達(dá)式方法
3正則表達(dá)式式的轉(zhuǎn)義字符
1定義正則表達(dá)式
在js中定義正則表達(dá)式很簡單,有兩種方式,一種是通過構(gòu)造函數(shù),一種是通過//,也就是兩個(gè)斜杠。
例如
var re =new RegExp("\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");
使用構(gòu)造函數(shù)定義正則表達(dá)式,注意大小寫,負(fù)責(zé)就會(huì)不起作用。由于構(gòu)造函數(shù)的參數(shù)是一個(gè)字符串,也可以是兩個(gè)斜杠的方式定義,遇到一些特殊字符就需要使用\進(jìn)行轉(zhuǎn)義
通過雙斜杠的方式定義同樣的正則表達(dá)式
var re =/\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
var re =new RegExp( /^\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/);
可以和構(gòu)造函數(shù)達(dá)到同樣的效果,但仔細(xì)分析,發(fā)現(xiàn),通過構(gòu)造函數(shù)需要更多的轉(zhuǎn)義字符\
2關(guān)于驗(yàn)證的三個(gè)正則表達(dá)式方法
使用正則表達(dá)式的主要有字符串的方法match,正則表達(dá)式的方法exec,test
正則表達(dá)式方法test測試給定的字符串是否滿足正則表達(dá)式,返回值是bool類型的,只有真和假,如果只是單純的判斷,不需要其他的處理,可以使用尤其是驗(yàn)證時(shí)。
function test(){
var text="index.aspx?test=1&ww=2&www=3"; //
var re =/\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
// var re =new RegExp("\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");
var result= re.test(text);
if(result)
{
alert("ok");
}else
{
alert("err");
}
}
正則表達(dá)式方法exec測試給定的字符串是否滿足正則表達(dá)式,返回匹配到的字符串,如果沒有匹配的則返回null,和test基本一致,如果需要獲取匹配的各個(gè)子字符串,可以使用下標(biāo)的方式,把上邊的test的例子可以改寫如下
function test(){
var text="index.aspx?test=1&ww=2&www=3";
var re = /\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
// var re =new RegExp( "\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");
var result= re.exec(text);
if(result)
{
alert("ok");
alert(result); // 是?test=1&ww=2&www=3,ww=2&
alert(result[0]+",0");//是?test=1&ww=2&www=3
alert(result[1]+",1");//是ww=2&
}else
{
alert("err");
}
}
match其實(shí)是字符串的方法,但參數(shù)確是一個(gè)正則表達(dá)式,把上邊的例子改寫后,如下
function test(){
var text="index.aspx?test=1&ww=234"; //
var re = /\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
// var re2 = "(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}"
var result= text.match(re);
if(result)
{
alert(result);//?test=1&ww=234,test=1&
alert(result[0]+",0");//?test=1&ww=234
alert(result[1]+",1");//test=1&
}else
{
alert("err");
}
}
其實(shí)字符串類還有多個(gè)函數(shù)可以傳遞正則表達(dá)式,split,search,replace等但這些方法已經(jīng)不適合驗(yàn)證了。
function test(){
var text="index.aspx?test=1&ww=234"; //
var re = /\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
// var re2 = "(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}"
var result= text.split(re);
alert(result);
alert(result[0]+",0");
alert(result[1]+",1");
}
3正則表達(dá)式式的轉(zhuǎn)義字符
在正則表達(dá)式中會(huì)經(jīng)常出現(xiàn)轉(zhuǎn)義字符,例如問號(hào)?在正則表達(dá)式中有特殊的含義,如果需要匹配問號(hào)?就需要轉(zhuǎn)義,使用轉(zhuǎn)義字符反斜杠\
如下兩個(gè)都是匹配問號(hào)開頭的一段字符串
function test(){
var text="?test=1&ww=2&www=3";
var re = /^\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;// \?表示配置問號(hào)?
// var re =new RegExp( "^\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");// \\?表示配置問號(hào)?
var result= re.exec(text);
if(result)
{
alert("ok");
alert(result);
alert(result[0]+",0");
alert(result[1]+",1");
}else
{
alert("err");
}
}
相關(guān)文章
Bootstrap基本樣式學(xué)習(xí)筆記之圖片(6)
這篇文章主要介紹了Bootstrap學(xué)習(xí)筆記之圖片基本樣式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12完美解決js傳遞參數(shù)中加號(hào)和&號(hào)自動(dòng)改變的方法
下面小編就為大家?guī)硪黄昝澜鉀Qjs傳遞參數(shù)中加號(hào)和&號(hào)自動(dòng)改變的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-10-10微信小程序?qū)崿F(xiàn)swiper切換卡內(nèi)嵌滾動(dòng)條不顯示的方法示例
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)swiper切換卡內(nèi)嵌滾動(dòng)條不顯示的方法,涉及微信小程序swiper選項(xiàng)卡組件相關(guān)操作技巧,需要的朋友可以參考下2018-12-12基于js實(shí)現(xiàn)數(shù)組相鄰元素上移下移
這篇文章主要介紹了基于js實(shí)現(xiàn)數(shù)組相鄰元素上移下移,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05JavaScript實(shí)現(xiàn)省市聯(lián)動(dòng)效果
這篇文章主要介紹了JavaScript實(shí)現(xiàn)省市聯(lián)動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11使用微信小程序顯示用戶當(dāng)前地理位置的詳細(xì)代碼
這篇文章主要介紹了使用微信小程序顯示用戶當(dāng)前地理位置的詳細(xì)代碼,在微信小程序的開發(fā)中不可避免的會(huì)遇到需要顯示用戶地理位置的操作,本文將簡單介紹如何在微信小程序中顯示用戶當(dāng)前的地理位置,需要的朋友可以參考下2022-06-06JavaScript實(shí)現(xiàn)移動(dòng)端橫豎屏檢測
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)移動(dòng)端橫豎屏檢測,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07