js中的Regex比起C#中的Regex要弱很多,但基本夠用了
1定義Regex
2關於驗證的三個這則運算式方法
3Regex式的逸出字元
1定義Regex
在js中定義Regex很簡單,有兩種方式,一種是通過建構函式,一種是通過//,也就是兩個斜杠。
例如
複製代碼 代碼如下:
var re =new RegExp("\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");
使用建構函式定義Regex,注意大小寫,負責就會不起作用。由於建構函式的參數是一個字串,也可以是兩個斜杠的方式定義,遇到一些特殊字元就需要使用\進行轉義
通過雙斜杠的方式定義同樣的Regex
複製代碼 代碼如下:
var re =/\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
複製代碼 代碼如下:
var re =new RegExp( /^\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/);
可以和建構函式達到同樣的效果,但仔細分析,發現,通過建構函式需要更多的逸出字元\
2關於驗證的三個Regex方法
使用Regex的主要有字串的方法match,Regex的方法exec,test
Regex方法test測試給定的字串是否滿足Regex,傳回值是bool類型的,只有真和假,如果只是單純的判斷,不需要其他的處理,可以使用尤其是驗證時。
複製代碼 代碼如下:
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");
}
}
Regex方法exec測試給定的字串是否滿足Regex,返回匹配到的字串,如果沒有匹配的則返回null,和test基本一致,如果需要擷取匹配的各個子字串,可以使用下標的方式,把上邊的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其實是字串的方法,但參數確是一個Regex,把上邊的例子改寫後,如下
複製代碼 代碼如下:
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");
}
}
其實字串類還有多個函數可以傳遞Regex,split,search,replace等但這些方法已經不適合驗證了。
複製代碼 代碼如下:
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");
}
3Regex式的逸出字元
在Regex中會經常出現逸出字元,例如問號?在Regex中有特殊的含義,如果需要匹配問號?就需要轉義,使用逸出字元反斜線\
如下兩個都是匹配問號開頭的一段字串
複製代碼 代碼如下:
function test(){
var text="?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);
alert(result[0]+",0");
alert(result[1]+",1");
}else
{
alert("err");
}
}