首頁  >  文章  >  web前端  >  詳解JavaScript正規表示式之RegExp物件_javascript技巧

詳解JavaScript正規表示式之RegExp物件_javascript技巧

WBOY
WBOY原創
2016-05-16 15:26:061273瀏覽

一、RegExp物件概述
       RegExp物件表示正規表示式,RegExp是正規表示式的縮寫,它是對字串執行模式相符的強大工具。 RegExp物件用於規定在文字中檢索的內容。當您檢索某個文字時,可以使用模式來描述要檢索的內容。 RegExp就是這種模式。簡單的模式可以是一個單獨的字符;更複雜的模式包括了更多的字符,並可用於解析、格式檢查、替換等。
正規表示式可以規定字串中的檢索位置,以及要檢索的字元類型等。
二、建立RexExp物件
建立正規表示式和建立字串類似,建立正規表示式有兩種方式:
       (1)使用字面量建立RegExp物件的語法:
       /pattern/attributes;
       (2)使用new關鍵字建立RegExp物件的語法:
       new RegExp(pattern, attributes);
參數釋義:
       1參數pattern是一個字串,指定了正規表示式的模式或其他正規表示式。
       2參數attributes是一個可選的模式字串,包含屬性 "g"、"i" 和 "m",分別用於指定全域匹配、不區分大小寫的匹配和多行匹配。
       RegExp物件用於儲存檢索模式。透過new關鍵字來建立RegExp物件。以下代建立了名為pattern的 RegExp對象,其模式為 "e",當使用該RegExp物件在一個字串中檢索時,將尋找的是字元 "e"。

<span style="font-size:18px;">var pattern=new RegExp("e"); 
var pattern=new RegExp("e",gi);//设置全局搜素不区分大小写</span> 

上述的也可以改成字面量的方式來創建,這種方式也是我們常用的方法:

<span style="font-size:18px;">var pattern=/e/; 
var pattern=/e/gi;</span> 

三、RegExp物件詳細解析
(1)RegExp物件屬性


這些基本我們在上述的例子都已經看過,但我們還是舉幾個簡單的例子來看一下:

<span style="font-size:18px;">var pattern=/e/gim; 
document.write(pattern.global+" ");//输出:true。说明设置了全局模式 
document.write(pattern.ignoreCase+" ");//输出:true 
document.write(pattern.multiline+" ");//输出:true 
document.write(pattern.source+" ");//输出:e</span> 

(2)RegExp物件方法

RegExp物件有3個方法:test()、exec()以及compile()。
1)test()方法檢索字串中的指定值,傳回值是true或false。

<span style="font-size:18px;">var pattern=/e/; 
var str="The best things in life are free"; 
document.write(pattern.test(str));//输出:true</span> 

2)exec()方法檢索字串中的指定值,傳回值是找到的值;如果沒有發現匹配,則傳回null。

實例:

<span style="font-size:18px;">var pattern=/e/; 
var str="The best things in life are free"; 
document.write(pattern.exec(str));//输出:e</span> 

實例:
      為RegExp物件新增第二個參數,以設定檢索。如果需要找到所有某個字元的所有存在,則可以使用 "g" 參數。
      使用 "g" 參數時,exec() 的原理如下:

  •       1找出第一個 "e",並儲存其位置。
  •       2如果再次執行exec(),則從儲存的位置開始檢索,並找到下一個 "e",並儲存其位置。
<span style="font-size:18px;">var pattern=/e/g; 
var str="The best things in life are free"; 
do 
{ 
 var result=pattern.exec(str); 
 document.write(result+" "); 
} 
while(result!=null)</span> 

輸出的結果為:e e e e e e null
3)compile()方法用於改變正規表示式,compile()既可以改變檢索模式,也可以新增或刪除第二個參數。

<span style="font-size:18px;">var pattern=/e/; 
var str="The best things in life are free"; 
document.write(pattern.test(str));//输出:true 
pattern.compile("d"); 
document.write(pattern.test(str));//输出:false</span> 

(3)支援正規表示式的String物件的方法

由於正規表示式和String物件有著一定的聯繫,因此String物件的一些方法可用於正規表示式:

<span style="font-size:18px;">var pattern=/e/g;//开启全局模式 
var str="The best things in life are free"; 
document.write(str.match(pattren)+"<br/>");//以数组的形式输出:e,e,e,e,e,e 
document.write(str.search(pattren)+"<br/>");//输出:2(返回第一个匹配到的位置) 
document.write(str.replace(pattren,"a")+"<br/>");//输出:Tha bast things in lifa ara fraa 
var pattern1=/\s/g;//\s表示空格字符 
document.write(str.split(pattren1));//输出:The,best,things,in,life,are,free</span> 

(4)元字符是拥有特殊含义的字符:

由于这些使用广泛,我们只是举几个例子:

<span style="font-size:18px;">var pattern=/b.ue/;//点符号表示匹配除了换行符以外的任意字符。 
var str="blue"; 
document.write(pattern.test(str));//输出:true</span> 

(5)方括号用于查找某个范围的字符:

<span style="font-size:18px;">var pattern=/[a-z]oogle/;//[a-z]表示26个小写字母,任意一个都可以匹配 
var str="woogle"; 
document.write(pattren.test(str));//输出:true</span> 

(6)量词

<span style="font-size:18px;">var pattern=/go+gle/;//o*表示匹配至少一个0 
var str="google"; 
document.write(pattren.test(str));//输出:true</span> 

四、常用的正则表达式
主要的是看变量patttern模式字符串表示的正则表达式。其余的是一些JS的基本的东西,可以忽略。
(1)检查邮政编码

<span style="font-size:18px;">var pattern=/^[0-9]{6}$/;//必须是6位,并且都是是数字 
var str=prompt("请输入邮政编码:"); 
if(pattern.test(str)) 
{ 
 alert("您输入的是正确的邮政标号!"); 
} 
else 
{ 
 alert("您输入的是错误的邮政标号!"); 
}</span> 

输入一些数据运行的结果为:
输入:056500

 输入:123

(2)简单电子邮件地址验证

<span style="font-size:18px;">var pattern=/^([\w\.\-]+)@([\w\-]+)\.([a-zA-Z]{2,4})$/; 
var str=prompt("请输入邮箱名称:"); 
if(pattern.test(str)) 
{ 
 alert("您输入的是正确的邮箱名称!"); 
} 
else 
{ 
 alert("您输入的是错误的邮箱名称!"); 
}</span> 

(3)检查上传文件压缩包

<span style="font-size:18px;">var pattern=/[\w]+\.zip|rar|gz/;//\w表示所有数字和字母以及下划线 
var str=prompt("请输入压缩包的名称:"); 
if(pattern.test(str)) 
{ 
 alert("您输入的是正确的压缩包名称!"); 
} 
else 
{ 
 alert("您输入的是错误的压缩包名称!"); 
}</span> 

(4)检查手机号

<span style="font-size:18px;">var pattern=/^[1][0-9]{10}$/; 
var str=prompt("请输入手机号码:"); 
if(pattern.test(str)) 
{ 
 alert("您输入的是正确的手机号码!"); 
} 
else 
{ 
 alert("您输入的是错误的手机号码!"); 
}</span> 

下面三个输出的结果就不再一一展示,只要写好模式正则表达式就可以检验输入的数据是否正确。由于刚刚接触正则表达式,可能有不正确的地方,自己会进行完善和修正,希望对大家的学习有所帮助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn