當咱們在作表單驗證或者在代碼中查找替換字符串時,咱們就會用到正則表達式。剛接觸正則表達式的時候感受它就像亂碼同樣徹底看不懂,在慢慢接觸瞭解掌握匹配規則以後發現正則表達式並不難理解,正則就像一個工具同樣,匹配出符合規則的字符串,正則表達式語法多借鑑Perl語言中的正則表達式的語法,在js中經過RegExp對象來使用正則。RegExp對象的test()方法來用以測試傳入的參數字符串是否與RegExp對象定義的模式字符串相匹配。下面就概括總結幾條基本的用法。javascript
一,簡單的正則表達式php
正則以//開頭和結尾(有點像註釋的寫法),建立正則表達式: var myRegExp = / \b'|'\b/; 也可利用RegExp對象的構造函數來建立正則,var myRegExp = new RegExp(」/……/「);一般用第一種。舉個例子:前端
var myString = "aa,bb,cc,aa,aa," var myRegExp = /aa/; myString = myString.replace(myRegExp,"AA"); alert(myString);
運行後會發現只有第一個aa被替換掉了,若是咱們要進行全局查找進行替換,就要用到正則表達式三個特性:java
特性字符 | 描述 |
g | 表示全局匹配,即查找全部與模式匹配的子串,而不是查找到第一個就中止 |
i | 忽略字母大小寫, |
m | 多行標記(該標記指定了元字符^和$能夠匹配多行字符串開始和結束位置) |
上面的例子若是查找全局的aa,則要寫成 var myRegExp = /aa/g;正則表達式
二,正則表達式中的特殊元字符函數
1,文本數字標點符號元字符,用\進行轉義,若是要匹配自己\的話則要轉義成\\工具
字符類 | 匹配的字符 | 實例 |
\d | 0-9中的任何數字 | \d\d將匹配72,但不匹配aa或7a |
\D | 任何非數字字符 | \D\D\D將匹配abc,但不匹配123 |
\w | 任何單詞字符(包括A-Z,a-z,0-9,以及下劃線_字符) | \w\w\w\w匹配Aa_1 |
\W | 任何非單詞字符 | \W將匹配@ |
\s | 任何空白字符,包含水平製表符,換行符,回車符,走紙符,垂直製表符 | \s匹配tab |
\S | 任何非空白字符 | |
. | 除了換行符(\n)以外的任何單個字符 | |
[…] | 匹配除了方括號以內的任何一個字符 |
注意:正則中元字符的大小寫具備徹底不一樣的意義,在寫正則表達式時多加註意測試
2,正則中的重複字符spa
專用字符 | 含義 | 實例 |
{n} | 前面的項重複n次 | x{2}將匹配xx |
{n,} | 其那面的項重複n次或者n次以上 | x{2,}將匹配xx,小小小,xxxx…… |
{n,m} | 前面的字符至少出現n次,最多出現m次 | x{2,4}將匹配xx,xxx,xxxx |
? | 前面的項出現0次或一次 | x?將匹配空串或者x |
+ | 前面出現一次或屢次,但至少出現一次 | x+匹配x,xx…… |
* | 前面的項出現0次或屢次 | 可能匹配空串 |
3,位置元字符code
位置元字符 | 描述 |
^ | 該元素表示匹配字符串的開始位子,或者匹配多行字符串每一行的開始位置, |
$ | 該元素表示匹配字符串的結束位子,或者匹配多行字符串每一行的結束位置, |
\b | 匹配單詞的分界位置,(單詞的分界位置就是位於一個單詞字符與一個非單詞字符之間的位置) |
\B | 匹配單詞的非分界位置, |
三,經常使用正則表達式
http://www.w3cfuns.com/tools.php?mod=regex (w3cfuns正則工具,可測試,經常使用正則均可以找到)
條件 | 表達式 |
中文字符 | [\u4e00-\u9fa5] |
空白行 | \n\s*\r |
HTML標記 | <(\S*?)[^>]*>.*?</\1>|<.*? /> |
Email地址 | \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* |
網址URL | [a-zA-z]+://[^\s]* |
賬號是否合法 (字母開頭,容許5-16字節,容許字母數字下劃線) |
^[a-zA-Z][a-zA-Z0-9_]{4,15}$ |
QQ號 | [1-9][0-9]{4,} |
身份證 | \d{15}|\d{18} |
ip地址 | \d+\.\d+\.\d+\.\d+ |
四,參考資料
1,慕課網 http://www.imooc.com/learn/44 表單驗證的一個小例子
2,正則表達式必知必會 下載電子書 (專門介紹正則的一本書)
3,javascript入門經典 下載電子書 (page:311,入門)
4,精通正則表達式(第三版) 下載電子書
五,結語
因爲本人在前端還屬於菜鳥階段,不免有疏漏錯誤之處,歡迎個位大牛吐槽指正,不勝感激。
附:(網上一位牛人總結的正則圖示)