心存正氣(be good),藝不壓身(be great)。幼年間習得的一句話,曾幾什麼時候,堅決了某一段路的走法。無奈窗頭月落,曾經想要燎原的星火自始至終都在忽閃忽爍,欲滅不滅,欲灼不灼。今天回到這年少萬兜鍪的起點,從新拾起這句話,爲的不是要勇闖天涯,而是 不辜負這窗外的太平天下。javascript
言及光輝歲月,到了今天想說還能從容說的,就只剩下那年c語言的一枝梨花壓海棠了。初入大學靠着一時血勇拼下了c語言全班第一,今日回想也是勁兒做大了,以致日後的數據結構,計算機網絡都是像拖死驢同樣拖過的,痛苦至極鬼知道。由着這經歷也絕了我技術立身的念想,但天命所歸,順之昌,逆之亡,由天不禁人,也由人不禁天。因此我如今是一個coder,技專前端,一邊作匠,一邊爲文,寄但願匠立其身,文傳其家。前端
書歸正言,正則表達式學藝之初諱莫如深,輒嘗不遂,後間有觸用,經世日久,也明白了大概,男兒天職保家屬,遇上某家主公臨近畢業要出來經世,千行萬做,終究隨了我,但一入侯門深似海,知無盡,學無邊,沒有捷徑尋給她,只能時時勸勉,好在前人播種後人收,有我爲她牽馬執鞭,希望可以長路多坦途。java
我的認爲後端比前端用正則的地方多且複雜,後端用正則處理富文本編輯器生成的字符串,能夠直接吐出圖文混排的前端結構,兩個字,略猛。 前端用正則可能是校驗郵箱,限制中文輸入,解析url之類的,都是小功能,但也花樣很多。我在業務上第一次用到正則是要在一個抽獎活動中校驗手機號和身份證號。正則表達式
我記述一下里頭正則相關的實現後端
檄文開徵討,聲明始程序,正則像大多數js變量同樣有兩種聲明方式網絡
var lbPattern1 = new RegExp("a"); var lbPattern2 = /a/;
上面的是用RegExp()構造函數的實例化來聲明,下面的是用引號包裹字符的直接量的方式來聲明。孰好孰很差,主流認爲下面的好,除了更簡潔,也有其餘的緣由,這個前輩說的詳細http://my.oschina.net/bothyan/blog/125668數據結構
正則相關的方法有7種,RegExp 對象自身的方法3種:compile、exec、test,支持正則表達式的 String 對象的方法4種:search、match、relpace、split,當this指向是RegExp 對象,也就是「.方法」點前頭是正則的時候用的是前三種,點前頭是字符串的時候用的後四種,這裏以前有些confuse某家主公,因此着重說與她知道。這些方法具體的使用有個地方說的很明白http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp,我再也不多說,就介紹一下我用的test方法,test方法能夠檢索字符串中指定的值,返回布爾值,簡單好用美得很。編輯器
手機號碼和身份證是有規律的,手機號碼規律:第一位是「1」(^1)、第二位或3或4或5或7或8([ 3 | 4 | 5 | 7 | 8])、總共11位剩下的9位都是數字(\d{9}$),身份證規律:15或18位的數字(^(\d{15}$|^\d{18}$)、或者17位的數字加最後一位X或x(^\d{17}(X|x))$)函數
跑一下this
var regPhone = /^1[3|4|5|7|8]\d{9}$/,regId = /^(\d{15}$|^\d{18}$|^\d{17}(X|x))$/; var strPhone = "18378654152",strId = "41038112112456753655"; if(!regPhone.test(strPhone)){ console.log("請輸入正確手機號"); } if(!regId.test(strId)){ console.log("請輸入正確身份證號"); }
這是拋磚引玉,正則表達式博大精深,能玩出花兒的多的是,但願看到的包括某家主公可以吃饅頭拉花捲。