輕鬆搞定正規表示式 好理解好記憶

2021-09-23 22:17:04 字數 3117 閱讀 9718

正規表示式專案經常用到,但是大部分程式設計師用的時候都是網上去找,很少有能自己寫出來,

為什麼會這樣呢?

其實原因我不大家也想到了,那玩意兒太難記了,咱一看,感覺沒有規律,要想記住甚是傷腦袋,現在好了,下面總結成一首打油詩,就好記多了,

廢話不多說了,直接上菜了,

正則其實也勢利,削尖頭來把錢揣; (指開始符號^和結尾符號$) 

特殊符號認不了,弄個倒槓來引路; (指\. \*等特殊符號) 

倒槓後面跟小w, 數字字母來表示; (\w跟數字字母;\d跟數字) 

倒槓後面跟小d, 只有數字來表示; 

倒槓後面跟小a, 報警符號嘀一聲; 

倒槓後面跟小b, 單詞分界或退格; 

倒槓後面跟小t, 製表符號很明了; 

倒槓後面跟小r, 回車符號知道了; 

倒槓後面跟小s, 空格符號很重要; 

小寫跟罷跟大寫,多得實在不得了; 

倒槓後面跟大w, 字母數字靠邊站; 

倒槓後面跟大s, 空白也就靠邊站; 

倒槓後面跟大d, 數字從此靠邊站; 

倒框後面跟大b, 不含開頭和結尾; 

單個字元要重複,三個符號來幫忙; (* + ?) 

0 星加1 到無窮,問號只管0 和1; (*表0-n;+表1-n;?表0-1次重複) 

花括號裡學問多,重複操作能力強; ( ) 

若要重複字串,園括把它括起來; ((abc) 表示字串「abc」重複3次 ) 

特殊集合自定義,中括號來幫你忙; 

轉義符號行不通,乙個乙個來排隊; 

實在多得排不下,橫槓請來幫個忙; ([1-5]) 

尖頭放進中括號,反義定義威力大; ([^a]指除「a」外的任意字元 ) 

1豎作用可不小,兩邊正則互替換; (鍵盤上與「\」是同乙個鍵) 

1豎能用很多次,複雜定義很方便; 

園括號,用途多; 

反向引用指定組,數字排符對應它; (「\b(\w+)\b\s+\1\b」中的數字「1」引用前面的「(\w+)」) 

支援組名自定義,問號加上尖括號; (「(?\w+)」中把「\w+」定義為組,組名為「word」) 

園括號,用途多,位置指定全靠它; 

問號等號字串,定位字串前面; (「\b\w+(?=ing\b)」定位「ing」前面的字串) 

若要定位串後面,中間插個小於號; (「(?<=\bsub)\w+\b」定位「sub」後面的字串) 

問號加個驚嘆號,後面跟串字串; 

phper都知道, !是取反的意思; 

後面不跟這一串,統統符合來報到; (「\w*d(?!og)\w*」,「dog」不符合,「do」符合) 

問號小於驚嘆號,後面跟串字串; 

前面不放這一串,統統符合來報到; 

點號星號很貪婪,加個問號不貪婪; 

加號問號有保底,至少重複一次多; 

兩個問號老規矩,0次1次團團轉; 

花括號後跟個?,貪婪變成不貪婪; 

還有很多裝不下,等著以後來增加。 

一些常用的正規表示式 

"^\d+$" //非負整數(正整數 + 0) 

"^[0-9]*[1-9][0-9]*$" //正整數 

"^((-\d+)|(0+))$" //非正整數(負整數 + 0) 

"^-[0-9]*[1-9][0-9]*$" //負整數 

"^-?\d+$" //整數 

"^\d+(\.\d+)?$" //非負浮點數(正浮點數 + 0) 

"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮點數 

"^((-\d+(\.\d+)?)|(0+(\.0+)?))$" //非正浮點數(負浮點數 + 0) 

"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //負浮點數 

"^(-?\d+)(\.\d+)?$" //浮點數 

"^[a-za-z]+$" //由26個英文本母組成的字串 

"^[a-z]+$" //由26個英文本母的大寫組成的字串 

"^[a-z]+$" //由26個英文本母的小寫組成的字串 

"^[a-za-z0-9]+$" //由數字和26個英文本母組成的字串 

"^\w+$" //由數字、26個英文本母或者下劃線組成的字串 

"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email位址 

"^[a-za-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$" //url 

/^(d|d)-((0([1-9]))|(1[1|2]))-(([0-2]([1-9]))|(3[0|1]))$/ // 年-月-日 

/^((0([1-9]))|(1[1|2]))/(([0-2]([1-9]))|(3[0|1]))/(d|d)$/ // 月/日/年 

"^([w-.]+)@(([[0-9].[0-9].[0-9].)|(([w-]+.)+))([a-za-z]|[0-9])(]?)$" //emil 

"(d+-)?(d-?d|d-?d|^d)(-d+)?" //**號碼 

"^(d|1dd|2[0-4]d|25[0-5]).(d|1dd|2[0-4]d|25[0-5]).(d|1dd|2[0-4]d|25[0-5]).(d|1dd|2[0-4]d|25[0-5])$" //ip位址 

匹配中文字元的正規表示式: [\u4e00-\u9fa5] 

匹配雙位元組字元(包括漢字在內):[^\x00-\xff] 

匹配空行的正規表示式:\n[\s| ]*\r 

匹配html標記的正規表示式:/<(.*)>.*<\/\1>|<(.*) \/>/ 

匹配首尾空格的正規表示式:(^\s*)|(\s*$) 

匹配**url的正規表示式:^[a-za-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\s*)?$ 

匹配帳號是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線):^[a-za-z][a-za-z0-9_]$ 

匹配國內**號碼:(\d-|\d-)?(\d|\d)? 

輕鬆學習正規表示式

英文原文 learn regular expressions regex with ease 謝謝合作!譯文如下 開篇,談談本文的主要內容 編寫驗證規則最流行和最簡單的方法就是正規表示式了,但唯一的乙個問題是正規表示式的語法太隱晦了,讓人蛋疼無比。很多開發者為了在專案中應用複雜的驗證,經常要使用一些...

輕鬆學習正規表示式

正規表示式 regular expression 描述了一種字串匹配的模式,可以用來檢查乙個串是否含有某種子串 將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。列目錄時,dir txt或ls txt中的 txt就不是乙個正規表示式,因為這裡 與正則式的 的含義是不同的。正規表示式是由普通字...

輕鬆學正規表示式

正規表示式廣泛用於查詢 校驗,無論使用什麼語言開發,或者是日常工作中使用編輯器,掌握正規表示式都能帶來效率上的收穫。我在別人的教程中看過一句話 如果你覺得正規表示式很簡單,要麼你是乙個天才,要麼你不是地球人。不要被嚇到,一旦理解正則後,其實也並不會那麼難,而且它給我們帶來的好處是毋庸置疑的。本文盡量...