正則表達式淺解

正則表達式:由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字面意義,而表示控制或通配的功能。

擴展正則表達式元字符:

字符匹配:
. 匹配任意單個字符
[] 匹配指定范圍內的任意單個字符
[^] 匹配指定范圍外的任意單個字符
[:alnum:] 字母和數字
[:alpha:] 代表任何英文大小寫字符,亦即 A-Z, a-z
[:lower:] 小寫字母
[:upper:] 大寫字母
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范圍廣)
[:cntrl:] 不可打印的控制字符(退格、刪除、警鈴…)
[:digit:] 十進制數字
[:xdigit:]十六進制數字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 標點符號

匹配次數:
用在要指定次數的字符后面,用于指定前面的字符要出現的次數
* 匹配前面的字符任意次,包括0次 貪婪模式:盡可能長的匹配
.* 任意長度的任意字符
? 匹配其前面的字符0或1次
+ 匹配其前面的字符至少1次
{n} 匹配前面的字符n次
{m,n} 匹配前面的字符至少m次,至多n次
{,n} 匹配前面的字符至多n次
{n,} 匹配前面的字符至少n次

位置錨定:定位出現的位置
^ 行首錨定,用于模式的最左側
$ 行尾錨定,用于模式的最右側
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\< 或 \b 詞首錨定,用于單詞模式的左側
\> 或 \b 詞尾錨定;用于單詞模式的右側
\<PATTERN\> 匹配整個單詞

分組:
()
后向引用:\1, \2, …
或者:
a|b: a或b
C|cat: C或cat
(C|c)at:Cat或cat

正則表達式中的3個重要符號:Bracket(括號), caret(插入符號)和Dollars(美元符號)

Bracket:

在正則表達式中有3種類型的括號201111170806251752

方括號 “[]”和花括號”{}” 。

方括號”[]”內是需要匹配的字符,花括號”{}”內是指定匹配字符的數量。

圓括號”()” 則用來分組。

Caret:

插入符號 “^” 表示正則式的開始。

Dollars:

美元符號”$” 表示正則式的結束。

現在你知道上面的3個語法后,你就可以寫世界上任何一條驗證規則了。比如下面的例子就很好的說明了上面3條正則語法是如何協調運作的:

^[a-z]{1,2}$

  • 上面的這條正則式只能匹配a-z的英文字母,同樣是在中括號中標明匹配范圍。
  • 花括號中則是標明匹配字符串的最小長度和最大長度。
  • 最后為了讓表達式更規則,分別在開頭和結尾加上了插入符號”^”和美元符號”$”。

現在我們就用上面的3條語法來實現一些正則表達式的驗證規則:

1.如何匹配像91230456, 01237648這樣的固定8位數?

“^[0-9]{8}$”

2.如何驗證最小長度為3最大長度為7的數字,如:123, 1274667, 87654?

“^[0-9]{3,7}$”

3.如何驗證像LJI10201020那樣的發票編號,前3個是字母剩余為8位長度的數字?

“^[[:alpha:]]{3}[0-9]{8}$”

4.如何驗證簡單的網址URL格式?

“^www[.][[:alnum:]]{1,}[.](com|org)$”

5.如何驗證email格式?

“^[[:alnum:]]{1,}@[[:alnum:]]{1,}.(com|ong)$”

6.如何驗證值在0-25的數字?

“^(([0-9])|(1[0-9])|(2[0-5]))$”

7.驗證格式為YYYY/MM/DD的日期?

“^(1[9][7-9][0-9]|2[0][0-9][0-9])[/]([1-9]|0[1-9]|1[0-2])[-/]([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])$”

以上例子由淺入深,基本涵蓋了正則表達式的一些基本用法,有利于初級階段的學習與思考。

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95124

(1)
煙花兒煙花兒
上一篇 2018-04-07
下一篇 2018-04-07

相關推薦

欧美性久久久久