談談我對正則表達式的認識


##文章定位(目標讀者) * 聽說過**正則表達式**,見過其使用的場合,但未能熟練掌握起來]的人 * 至少看過一遍[正則表達式30分鍾入門教程](http://deerchao.net/tutorials/regex/regex.htm)但未能完全掌握的人。 ##正則表達式是什么 **正則表達式(Regular Expression)**是一個概念,一種語法、句法的約定。每一種具體的語句(C#,Java,JavaScript)有其對於`正則表達式`的具體實現,並且會有差別。[正則表達式30分鍾入門教程](http://deerchao.net/tutorials/regex/regex.htm)講述的是.net(C#)的正則表達式。 ##JavaScript的正則表達式 本人擅長的是JavaScript的正則表達式,這種正則表達式一個最大的特點是不支持`零寬度正回顧后發斷言`,原因很簡單,js是解釋執行的。細節等深入后再去理解。 ##語法查詢 * [正則表達式30分鍾入門教程](http://deerchao.net/tutorials/regex/regex.htm) * [JavaScript RegExp 對象參考手冊](http://www.w3school.com.cn/js/jsref_obj_regexp.asp) * [JavaScript String 對象參考手冊](http://www.w3school.com.cn/js/jsref_obj_string.asp)中的部分方法例如`match`,`replace`,`search`。 ##應用場景 正則表達式有兩大應用場景 1. 檢測用戶的輸入是否合法; 2. 從一堆信息中提取出自己想要的部分信息; 這兩大應用場景最大的區別是,檢測輸入的合法性是針對整個輸入字符的,即要加上 `^`去匹配字符串的開始及`$`去匹配字符串的結束,否則意義不大,至少本人還沒遇到過不加上的情景。而提取信息的場景一般涉及到全局搜索`g` ##簡單的例子 光是看代碼,怎么也掌握不了正則表達式的,下面我們來實踐一下: 打開chrome(如果你還沒安裝chrome,那你不能算是本文的目標讀者),當然安裝了firebug的firefox或者高版本的IE也OK,,按`F12`,調出開發人員工具。 切換到如下的選項卡,輸入代碼 ```javascript /Hello World/.test("Hello World") ``` ![Hello World 示例代碼](https://images0.cnblogs.com/blog/84053/201402/020019328759145.jpg) OK,以上代碼就是用一個正則表達式去檢測一個字符串是否包含"Hello World"這個特定字符。 在JS中,最常用的就是Regexp的直接量,即在兩條斜杠`//`中加上正則表達式的語法。也就是說,在[正則表達式30分鍾入門教程](http://deerchao.net/tutorials/regex/regex.htm)提及到的語法例如`[aeiou]`、`\(?0\d{2}[) -]?\d{8}`等等,置於兩條斜杠`//`中就成為一個JS的正則表達式對象(`/[aeiou]/`、`/\(?0\d{2}[) -]?\d{8}/`),就擁有[JavaScript RegExp 對象參考手冊](http://www.w3school.com.cn/js/jsref_obj_regexp.asp)中提到的方法,也能應用到[JavaScript String 對象參考手冊](http://www.w3school.com.cn/js/jsref_obj_string.asp)的部分方法中,才能應用到實際編程中,具體參考上面的Hello World 示例代碼。 最后,根據我自己的經驗,要自己去做一個實踐,例如 1. 把本篇文章中body部分的內容提取出來,或者把所有的超連接中的文字提取出來 2. 設計一個表單,驗證用戶的輸入,具體的驗證可以參考[常用正則表達式](http://deerchao.net/tutorials/regex/common.htm) ##最后的話 以上是我本人學習正則表達式的一些體會,當時的體會就是:看到了很多語法細節,但不知道如何付諸實踐,在自己進行了一個小實踐后,終於明白。在此進行整理。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM