国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

正則表達式RegExp

mrli2016 / 1558人閱讀

摘要:編號默認代表整個表達式。小數可有可無,但最多位文件中文字符的正則表達式雙字節字符空白行的正則表達式標記的正則表達式首尾空白字符的正則表達式或騰訊號中國郵政編碼地址地址

正則表達式簡析

所謂正則表達式,就是用一個特定的表達式完成字符串匹配的工作,我們可以規定什么字符以什么方式出現,出現多少次,前后需要有什么,然后提取出符合這個要求的字符串或者判斷某個字符串是否符合這個要求。

元字符
代碼/語法 說明
. 匹配除換行符以外的任意字符
w 匹配字母或數字或下劃線或漢字
s 匹配任意的空白符
d 匹配數字
b 匹配單詞的開始或結束
^ 匹配字符串的開始
$ 匹配字符串的結束

一下是上面部分字符的反義

代碼/語法 說明
W 匹配任意不是字母,數字,下劃線,漢字的字符
S 匹配任意不是空白符的字符
D 匹配任意非數字的字符
B 匹配不是單詞開頭或結束的位置

還有一組具有反義的表達式:

代碼/語法 說明
[aeiou] 匹配aeiou中任一字符
1 匹配除了aeiou這幾個字母以外的任意字符
轉義字符
代碼/語法 說明
a 響鈴
t 制表符
r 回車符
n 換行符
f 換頁符
b 退格
e ESC
v 垂直制表符
cC 控制字符(如ctrl+c)
040 八進制(0開頭)
x20 十六進制(x開頭)
uA0FF Unicode字符
G 當前搜索的開頭
A 必須出現在字符串開頭
Z 必須實現在字符串結尾或 之前
z 必須實現在字符串結尾
注1 在[]中,正則表達式中有含義的字符都要再前方加轉義。如寫作
注2 b在[]中才表示退格,在外面表示單詞邊界
注3 正則表達式不允許雙引號中出現單引號

注意換行的回車不是一個東西,雖然我們看上去是一樣的。這個和編碼發展歷史有關,區別見下表:

Unicode序列 正則 名稱 簡寫 描述
U+000DU+000A (rn) 回車換行 CRLF Windows,DOS中的文本文件
U+000D (r) 回車 CR 舊版的MacOS中的文本文件
U+000A (n) 換行 LF Unix,Linux,BSD和OSx中的文本文件
限定符
貪婪的
代碼/語法 說明
* 重復零次或更多次
+ 重復一次或更多次
? 重復零次或一次
{n} 重復n次
{n,} 重復n次或更多次
{n,m} 重復n到m次
非貪婪的
代碼/語法 說明
*? 重復任意次,但盡可能少重復
+? 重復1次或更多次,但盡可能少重復
?? 重復0次或1次,但盡可能少重復
{n,m}? 重復n到m次,但盡可能少重復
{n,}? 重復n次以上,但盡可能少重復
分組

我們已經提到了怎么重復單個字符,但如果想要重復多個字符又該怎么辦?你可以用小括號來指定子表達式(也叫做分組),然后你就可以指定這個子表達式的重復次數了。 比如

(?#這一行是個注釋,注釋這樣寫)
^abc{2,}   (?#匹配ab開頭后面2個及以上c)
^a(bc){2,}   (?#匹配a開頭后面2個及以上bc)

每一個()中的變量都會被分配一個編號((?:exp)除外),按()出現順序,從左到右從外到內編號,從1開始。編號0默認代表整個表達式。可以利用+ 編號的形式訪問對應編號的匹配。例如:

<([^>]*)>[^<>]*    (?#匹配一對不含子標簽的xml標簽及里面的內容)

在.Net中,可以用(?exp)為表達式命名,此時,該表達式也同時具有編號,可以用k訪問這個表達式。需要注意的是,系統會按從左到右從外到內的順序給沒有名字的表達式編號,然后再從頭開始按從左到右從外到內的順序給有名字的表達式編號。

當然還有一些有意義的括號,除了(?:exp)以外,都會帶有編號。下面是完整的分組說明:

代碼/語法 說明
(exp) 普通分組
(?exp) 名為name的分組
(?:exp) 匹配字符串exp,但不為其分配組號
零寬度斷言

何為斷言:斷言某個位置會出現,或不會出現某個模式,但不去匹配這個模式。當斷言不成功時,不再匹配。

代碼/語法 說明
(?=exp) 匹配字符串exp前面的位置
(?<=exp) 匹配字符串exp后面的位置
(?!exp) 匹配后面不是字符串exp的位置
(? 匹配前面不是字符串exp的位置
(?>exp) 只匹配exp一次
邏輯運算符 或
代碼/語法 說明
邏輯或
遞歸匹配

這個和上面的分組命名不矛盾,這個就是那個部分的擴展。

代碼/語法 說明
(?exp) 把匹配的內容命名為name,入棧
(?<-name>exp") 從棧中彈出一個內容
(?(name) yes no) 如果棧中存在名為name的內容就匹配yes部分,否則匹配no部分,這里yes和no分別是2段表達式
運算符優先級

從上到下從高到低,同一高度順序運算

優先級
轉義字符
() , []
* , + , ? , {n}, {n, } , {n, m}
^ , $ , 元字符
常用的正則表達式 驗證數字類型輸入

數字:^[0-9]*$

n位的數字:^d{n}$

至少n位的數字:^d{n,}$

m-n位的數字:^d{m,n}$

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

非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(.[0-9]{1,2})?$

帶1-2位小數的正數或負數:^(-)?d+(.d{1,2})?$

正數、負數、和小數:^(-|+)?d+(.d+)?$

有兩位小數的正實數:^[0-9]+(.[0-9]{2})?$

有1~3位小數的正實數:^[0-9]+(.[0-9]{1,3})?$

非零的正整數:^[1-9]d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^+?[1-9][0-9]*$

非零的負整數:^-[1-9][]0-9″*$ 或 ^-[1-9]d*$

非負整數:^d+$ 或 ^[1-9]d*|0$

非正整數:^-[1-9]d*|0$ 或 ^((-d+)|(0+))$

非負浮點數:^d+(.d+)?$ 或 ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$

非正浮點數:^((-d+(.d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$

正浮點數:^[1-9]d*.d*|0.d*[1-9]d*$ 或 ^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$

負浮點數:^-([1-9]d*.d*|0.d*[1-9]d*)$ 或 ^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$

浮點數:^(-?d+)(.d+)?$ 或 ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$

驗證字串類型輸入

漢字:^[u4e00-u9fa5]+$

英文和數字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$

長度為3-20的所有字符:^.{3,20}$

由26個英文字母組成的字符串:^[A-Za-z]+$

由26個大寫英文字母組成的字符串:^[A-Z]+$

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

由數字和26個英文字母組成的字符串:^[A-Za-z0-9]+$

由數字、26個英文字母或者下劃線組成的字符串:^w+$ 或 ^w{3,20}$

中文、英文、數字包括下劃線:^[u4E00-u9FA5A-Za-z0-9_]+$

中文、英文、數字但不包括下劃線等符號:^[u4E00-u9FA5A-Za-z0-9]+$^[u4E00-u9FA5A-Za-z0-9]{2,20}$

可以輸入含有^%&’,;=?$”等字符:[^%&",;=?$x22]+

禁止輸入含有~的字符:[^~x22]+

驗證特殊類型輸入

Email地址:^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$

域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?

InternetURL:[a-zA-z]+://[^s]*^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$

手機號碼:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])d{8}$

電話號碼(“XXX-XXXXXXX”、”XXXX-XXXXXXXX”、”XXX-XXXXXXX”、”XXX-XXXXXXXX”、”XXXXXXX”和”XXXXXXXX):^($$d{3,4}-)|d{3.4}-)?d{7,8}$

國內電話號碼(0511-4405222、021-87888822):d{3}-d{8}|d{4}-d{7}

身份證號(15位、18位數字):^d{15}|d{18}$

短身份證號碼(數字、字母x結尾):^([0-9]){7,18}(x|X)?$^d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$

帳號是否合法(字母開頭,允許5-16字節,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

密碼(以字母開頭,長度在6~18之間,只能包含字母、數字和下劃線):^[a-zA-Z]w{5,17}$

強密碼(必須包含大小寫字母和數字的組合,不能使用特殊字符,長度在8-10之間):^(?=.*d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

日期格式:^d{4}-d{1,2}-d{1,2}

一年的12個月(01~09和1~12):^(0?[1-9]|1[0-2])$

一個月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$

錢的輸入格式:1到3個數字,后面跟著任意個逗號+3個數字,逗號成為可選,而不是必須。小數可有可無,但最多2位:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$

xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+.[x|X][m|M][l|L]$

中文字符的正則表達式:[u4e00-u9fa5]

雙字節字符:[^x00-xff]

空白行的正則表達式: s*

HTML標記的正則表達式:<(S*?)[^>]*>.*?|<.*? />

首尾空白字符的正則表達式:^s*|s*$(^s*)|(s*$)

騰訊QQ號:[1-9][0-9]{4,}

中國郵政編碼:[1-9]d{5}(?!d)

IPv4地址:d+.d+.d+.d+

IPv4地址:((?:(?:25[0-5]|2[0-4]d|[01]?d?d).){3}(?:25[0-5]|2[0-4]d|[01]?d?d))

  • aeiou ?

  • 文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

    轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/97593.html

    相關文章

    • JS中的正則達式

      摘要:構造函數可以有兩個字符串參數,第一個參數包含正則表達式的主體部分。只讀的布爾值,說明這個正則表達式是否帶有修飾符。中正則的擴展構造函數在中,只能接受字符串作為參數,允許其直接接受正則表達式作為參數。 上文傳送門:初探正則表達式 正則表達式是一個描述字符模式的對象,JavaScript 的 RegExp 類表示正則表達式,String 和 RegExp 都定義了方法,后者使用正則表達式進...

      Soarkey 評論0 收藏0
    • 《JavaScript 闖關記》之正則達式

      摘要:正則表達式的字符串表示,按照字面量形式而非傳入構造函數中的字符串模式返回。其中,表示匹配項在字符串中的位置,而表示應用正則表達式的字符串。下面列出了正則表達式所不支持的特性。關卡按要求完成下列常用的正則表達式。 由于本課程的核心是 JavaScript,所以本文著重講解了「正則表達式」在 JavaScript 中的用法,并未深入「正則表達式」的具體細節。如果您尚不了解「正則表達式」,強...

      TalkingData 評論0 收藏0
    • JavaScript標準庫系列——RegExp對象(三)

      摘要:目錄導語理解正則表達式模式的規則字符串和正則實例的屬性和方法檢索實例小結導語正則表達式是處理字符串的一門藝術手法,應用場景經常出現在表單驗證部分高級程序設計一書開篇提到,這門語言最原始的應用就是處理輸入驗證操作,所以正則表達式從誕生那一刻就 目錄 導語 1.理解正則表達式 2.模式的規則 3.字符串和正則實例的屬性和方法 4.檢索實例 5. 小結 導語 正則表達式是處理字符串的一門藝...

      邱勇 評論0 收藏0
    • JavaScript正則達式的匹配模式

      摘要:選擇分組和引用正則表達式的語法還包括指定選擇項子表達式分組和引用前一子表達式的特殊字符。帶圓括號的表達式的另一個用途是允許在同一正則表達式的后部引用前面的子表達式。 正則表達式(regular expression)是一個描述字符模式的對象。JavaScript的 RegExp類 表示正則表達式,String和RegExp都定義了方法,后者使用正則表達式進 行強大的模式匹配和文本檢索與...

      wqj97 評論0 收藏0
    • JavaScript的正則達式

      摘要:正則表達式是由普通字符例如字符到以及特殊字符稱為元字符組成的文字模式。方法參數一個正則表達式對象。如果正則表達式沒有標志,則會返回和相同的結果。其被視為一整個字符串,而不是一個正則表達式。 正則表達式 正則表達式(Regular Expression)是一種文本模式,包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為元字符)。正則表達式使用單個字符串來描述、匹配一系列匹配某個...

      jsdt 評論0 收藏0
    • javascript正則達式

      摘要:對象表示正則表達式,它是對字符串執行模式匹配的強大工具。方法也可用于改變和重新編譯正則表達式。在下面的這個示例中,定義正則表達式直接量,用來匹配字符串中每個字符。 RegExp對象表示正則表達式,它是對字符串執行模式匹配的強大工具。RegExp對象用于規定在文本中檢索的內容。 創建RegExp對象有兩種方式:1.直接量語法:/pattern/attributes示例:var patt1...

      vincent_xyb 評論0 收藏0

    發表評論

    0條評論

    最新活動
    閱讀需要支付1元查看
    <