正則表達式,又稱正規表示法、常規表示法(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),計算機科學的一個概念。正則表達式使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。在很多文本編輯器里,正則表達式通常被用來檢索、替換那些符合某個模式的文本。
## 一、創建
創建正則表達式和創建字符串相似,有以下兩種方法。
方法一:NEW運算符
~~~
var box = new RegExp("Box", 'ig');
~~~
方法二:字面量
~~~
var box=new RegExp/box/ig;
~~~
模式參數
| 參數 | 含義 |
|-----|-----|
| i | 忽略大小寫 |
| g | 全局匹配 |
| m | 多行匹配 |
## 二、測試
RegExp對象提供兩個測試方法:
方法一:test()
在字符串中查找是否存在指定的正則表達式,返回值為布爾值,如果匹配到了就返回True,如果不存在就返回False。
方法二:exec()
如果執行成功,就返回包含該查找字符串的相關信息數組。如果失敗返回NULL。
實例1:
匹配信息為box,i參數是不區分大小寫。在str變量存放的字符串中查找,返回的變量為True。
~~~
var pattern = new RegExp('box', 'i');
var str = 'This is a Box!';
alert(pattern.test(str));
~~~

實例2:
用exec()方法返回的是匹配到的源字符串中的內容,如果沒有匹配到則返回NULL.
~~~
var pattern = new RegExp('box', 'i');
var str = 'This is a Box!';
alert(pattern.exec(str));
~~~

## 三、其他方法:

1、match()方法
~~~
var pattern = /Box/ig;
var str = 'This is a big Box!That is a beautiful box';
alert(str.match(pattern));
~~~
返回為:Box,box
2、replace()方法
~~~
var pattern = /Box/ig;
var str = 'This is a big Box!That is a beautiful box';
alert(str.replace(pattern,'Apple'));
~~~
返回為:This is a big Apple!That is a beautiful Apple
3、search()方法
~~~
var pattern = /Box/ig;
var str = 'This is a big Box!That is a beautiful box';
alert(str.search(pattern));
~~~
返回為:查到的位置,如果查不到就返回-1.
4、split()方法
~~~
var pattern = /Box/ig;
var str = 'This is a big Box!That is a beautiful box';
alert(str.split(pattern));
~~~
返回為:拆分成的字符串數組。This is a big ,!That is a beautiful ,
## 四、獲取控制
正則表達式元字符是包含特殊含義的字符,它們有一些特殊功能,可以改變匹配模式的方式。做個簡單的例子。
實例:
簡單的電子郵件驗證:
~~~
var pa = /^([\w\.\-]+)@([\w\-]+)\.([\w]{2,4})$/;
var str = 'zhou@163.com';
alert(pa.test(str));
~~~
()的作用是分組模式,{2,4}的意思是匹配分組里的字符串2-4次。
正則量詞的貪婪與惰性:
貪婪量詞:先看整個字符串是否匹配,如果不匹配就把最后一個字符去掉在進行匹配,不匹配繼續去掉最后一個字符,指導找到一個匹配或者不剩任何字符才停止。
惰性量詞:先看第一個字符串是否匹配,如果第一個不匹配就在加入第二個字符串依此類推,指導找到一個匹配或者不剩任何字符才停止,貪婪量詞與貪婪量詞的方法正好相反.
實例一:
?號關閉了貪婪匹配,只替換了字符串中的第一個字符a.
~~~
var pattern = /[a-z]+?/;
var str = 'abcdefghijklmnopqrstuvwxyz';
var result = str.replace(pattern, 'YYY');
alert(result);
~~~
返回值為;YYYbcdefghijklmnopqrstuvwxyz
實例二:
g參數開啟的全局,禁止了貪婪。
~~~
var pattern = /8(.+?)8/g;
var str = 'This is 8google8,That is 8google8,There is 8google8 ';
var result = str.replace(pattern, '<strong>$1</strong>');
document.write(result);
~~~
## 五、總結:
假設用戶在填寫HTML表單的時候,需要寫姓名,年齡,性別,E-Mail等,在提交到服務器之前,在前端先驗證一遍。看看用戶輸入的信息是否符合規定。這種客戶端驗證的方法,可以節省大量的服務器系統資源,獲得更好的用戶體驗。