正規表示式 入門之道

2021-06-08 14:14:48 字數 2946 閱讀 7873

1,正規表示式的用途:正規表示式是用來判斷「字 符串」是否符合某個「樣式」時,這個「樣式」的表達方式。

2,正規表示式的寫法

1)可以使用「//」括住正規表示式的樣式,當在程式中使用正規表示式時,這是最快速容易的方式。

2)可以用類方法建立物件「regxep.new(str)」這種寫法。原來已經有了乙個代表樣式的字串時,用這種方式建立正規表示式會比較方 便。

3)「%r」,當正規表示式內部用到「/」字元時,改用「%r」會比較方便。

3,正規表示式的匹配:符號「=~」,寫法:正則 表示式 =~ 字串;不成立時會返回nil,成立時會返回字串中與樣式匹配成功的起始位置。

4,正規表示式的樣式

1)英文本母與數字:只會單純地去匹配字串裡是否包含相同的文字。

2)轉義字元:

a,「^」表示「與行首匹配成功的樣式」;「$」表示「與行尾匹配成功的樣式」;「\a」表示「與字串頭匹配成功的樣式」;「\z」表示「與字元 串尾匹配成功的樣式」。

b,「」表示「與其中任意乙個字元匹配」;「[-]」表示「匹配的範圍」;「[^]」表示「與這裡所指定之外的字匹配成功」;

c,「.」表示任意乙個字元;「\s」表示與空白,即空白字元(0×20)、定位符號、換行字元、換頁字元匹配成功;「\d」表示「與0-9之間的 數字匹配成功」;「\w」表示「與英文與數字匹配成功」;「\」後面接上「^」、「$」、「[」這些英文、數字以外的轉義字元時,這些字元將不再具備轉義 字元的小用了,而可以去匹配這些字元本身。

d,「*」表示「出現0次以上」;「+」表示「出現1次以上」;「?」表示「出現0次和1次」;「*?」表示「出現0次以上,但取最短的匹配結 果」;「+?」表示「出現1次以上,但取最短的匹配結果」;「()」表示「多個字構成的字串反覆匹配」;「|」表示「可以在樣式裡列舉多個候補條件,只 要其中乙個符合就匹配成功」。

e,quote方法:會返回忽略所有轉移字串後的字串,再以這個字串作為new的實參建立出正規表示式物件。

f,「i」:忽略英文本母大小寫的差異;「s」:字元編碼方式為shift_jis;「e」:字元編碼方式為e _jp;"u":字元編碼方式為 utf-8,"n":匹配時不考慮文字編碼;「x」:忽略正規表示式內部的空白,並忽略「#」後面的內容;「m」:使得「.」能與換行符號匹配成功

附上常用正規表示式:

14,匹配特定字串:

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

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

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

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

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

\d|\d[a-za-z]|\d  //身份證號碼驗證(包括新舊的驗證)

^(13[0-9]|15[0|3|6|8|9])\d$  //任意手機號碼驗證

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

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

ns*r    //匹配空白行的正規表示式

^s*|s*$    //匹配首尾空白字元的正規表示式

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

d+.d+.d+.d+      //匹配ip位址

^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個英文本母或者下劃線組成的字串

只能輸入數字:^[0-9]*$

只能輸入零和非零開頭的數字:^(0|[1-9][0-9]*)$

只能輸入有兩位小數的正實數:^[0-9]+(.[0-9])?$

只能輸入有1-3位小數的正實數:^[0-9]+(.[0-9])?$

只能輸入非零的正整數:^+?[1-9][0-9]*$

只能輸入非零的負整數:^-[1-9][0-9]*$

只能輸入長度為3的字元:^.$

只能輸入由數字和26個英文本母組成的字串:^[a-za-z0-9]+$

只能輸入由數字、26個英文本母或者下劃線組成的字串:^w+$

以字母開頭,長度在6-18之間,只能包含字元、數字和下劃線:^[a-za-z]w$

驗證是否含有^%&',;=?$等字元:[^%&',;=?$x22]+

只能輸入漢字:^[一-龥],$

驗證interneturl:^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$

正規表示式 正則入門

先從乙個例子開始正規表示式。書寫乙個匹配手機號的正規表示式,為了方便討論,假定手機號是1開頭,第二位只能是3 5 8中的其中乙個,總共11位的數字,形如13 匹配手機號的正規表示式為 1 358 d 下面介紹此正規表示式中的各個符號的含義。表示字串的開頭,後面緊接著1,表示匹配的字串要以 1 開頭。...

正規表示式入門

對於文字字元,有11個字元被保留作特殊用途。他們是 這些特殊字元也被稱作元字元 不可顯示字元 可以使用特殊字串行來代表某些不可顯示字元 代表tab 0x09 代表回車符 0x0d 代表換行符 0x0a 字符集 字符集是由一對方括號 括起來的字元集合。使用字符集,你可以告訴正規表示式引擎僅僅匹配多個字...

正規表示式入門

老師說過 正規表示式就是用字串讀取字串!學習正規表示式的最好方法是從例子開始,理解例子之後再自己對例子進行修改,實驗。下面給出了不少簡單的例子,並對它們作了詳細的說明。假設你在一篇英文 裡查詢hi,你可以使用正規表示式hi。這幾乎是最簡單的正規表示式了,它可以精確匹配這樣的字串 由兩個字元組成,前乙...