成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

正則表達式介紹及常見用法

開發 開發工具
正則表達式(Regular Expression),又稱正規表示法、常規表示法,在實際的軟件開發項目中經常會被使用到。它使用單個字符串來描述、匹配并獲取一系列符合某個句法規則的結果。

正則表達式(Regular Expression),又稱正規表示法、常規表示法,在實際的軟件開發項目中經常會被使用到。它使用單個字符串來描述、匹配并獲取一系列符合某個句法規則的結果。

正則表達式起源

1956年,數學家Stephen Kleene在Warren McCulloch和Walter Pitts早期神經系統工作的基礎上,設計出了一個數學符號體系——regular sets(規則的集合),這個東西很快被計算機科學家用于編譯器的掃描或詞法分析。由于正則表達式強大的文本處理能力,很快被應用到Unix的工具軟件grep中;此后,正則表達式被廣泛應用于Unix系操作系統、Perl、PHP,Delphi、JAVAScript、C#(.NET)、JAVA、python、Ruby等語言和開發環境中。

正則表達式定義

正則表達式是用來描述字符串特定結構(規則)的語言,由相關引擎執行。正則表達式形象化的描述如圖1所示。


 

圖1 正則表達式形象化的描述

正則表達式作用

1.數據驗證

測試輸入的字符串,是否符合一定的規則,是否允許輸入等。例如,可對Email地址合法性、網址、電話號碼、出生年月等進行驗證。

2.操作文本

用來識別文檔中的特定文本、完全刪除該文本或者用其它文本或字符替換。

3.提取子字符串

基于模式匹配,可以查找文檔內或輸入域內特定的文本,在涉及替換操作時往往都需要先提取。

正則表達式基本語法

1.直接量字符(通常是不可見的字符及匹配自身的字符)

2.字符類(可以匹配多種字符)

3.重復

4.選擇、分組和錨字符

5. 標志(標示引擎的工作模式)

說明:

在正則表達式前用“(?i)”標示,例如:(?i)^root$,則root、Root、ROOT都符合要求。

6.其它

1) 匹配元字符“( [ { \ ^ $ | ) ? * + .”,需要用“\”轉義。

例如:匹配“.”,正則表達式為“\.”。

2) 貪婪量詞與惰性量詞

惰性量詞僅僅在貪婪量詞后面加個“?”。

用貪婪量詞進行匹配時,它首先會將整個字符串當成一個匹配,如果匹配成功就退出,如果不匹配,就截去最后一個字符進行匹配;如果不匹配,繼續將最后一個字符截去進行匹配,直到有字符匹配為止。

用惰性量詞進行匹配時,它首先將第一個字符當成一個匹配,如果成功則退出;如果失敗,則測試前兩個字符,依次增加,直到遇到合適的匹配為止 。

例如:“\d+”是貪婪量詞,而“\d+?”是非貪婪(惰性)量詞。

3) 子匹配

內部的分組匹配,用“()”標示一個分組。

子匹配的每個分組都被放在一個特殊的地方以備將來使用,這些被存儲的值是分組中的特殊值,稱之為反向引用。

例如:驗證輸入的是日期,再提取到月份,其正則表達式為“^\d{4}\-(\d{2})\-\d{2}$”。

4) 正向前瞻和負向前瞻

正向前瞻:(?<=字符)或(?=字符)

注意:一定要有等于才行。

負向前瞻:(?<!字符)或(?!字符)

注意:一定要有不等于才行。

也就是說,我們可以自己制定匹配的邊界在哪里,這在字符串提取時常用。

示例:

例1,我們取“#”之前的字符,但是不包括“#”,其正則表達式:[\w]+(?=#)

例2,我們取不在“#”之前的字符,但是不包括“#”,其正則表達式: [\w]+(?!#)

例3,我們取“<>”之間的字符,但是不包括“<>”,其正則表達式: (?<=<)[\w]+(?=>)

正則表達式常見用法

1.數字

1)正整數: ^[1-9][0-9]*$

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

3)負整數:^-[1-9][0-9]*$

4)整數: ^(0|-?[1-9][0-9]*)$

5)非負浮點數:^\d+(\.\d+)?$

2.字母

1)英文字符串:^[A-Za-z]+$

2)英文大寫串:^[A-Z]+$

3)英文小寫串:^[a-z]+$

4)英文字符數字串:^[A-Za-z0-9]+$

5)英文數字加下劃線串:^\w+$

3.其它

1.E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$

2.URL:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$

3.郵政編碼:^[1-9]\d{5}$

4.中文:^[\u4e00-\u9fA5]+$

5.電話號碼:^((\d2,3)|(\d{3}\-))?(0\d2,3|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$

6.手機號碼:^1\d{10}$

7.首尾空格:(^\s+)|(\s+$)

8.身份證:^(\d{15}|\d{18})$ (注:中國的身份證為15位或18位)

9.賬號:^[a-zA-Z]\w{4,15}$ (注:字母開頭,允許5-16字節,允許字母數字下劃線)

10.IP:^([1-9]\d{0,1}|1\d{2}|2[0-4]\d|25[0-5])(\.([1-9]\d{0,1}|1\d{2}|2[0-4]\d|25[0-5])){3}$ (IP是由大于等于0且小于等于255的數字、“.”組成的,驗證每個數字分項再和“.”拼接就可以了)

總結

正則表達式的功能非常的強大,大家在實際使用到的時候才能夠感覺得到。當然,要想同時記住這么多的正則表達式的規則,也不是簡單的事情。大家可以將常見的正則表達式記錄下來(就像本文一樣),待需要用到的時候可以拿出來參考。

【本文是51CTO專欄作者周兆熊的原創作品,轉載請通過51CTO獲取作者授權】

責任編輯:武曉燕 來源: csdn博客
相關推薦

2010-08-12 10:35:06

Flex正則表達式

2010-07-19 10:40:16

Perl正則表達式

2010-08-09 13:58:59

Flex正則表達式

2011-06-16 16:05:23

正則表達式

2010-07-14 09:37:46

Perl正則表達式

2010-03-11 08:55:45

python正則表達式

2011-06-16 15:40:28

正則表達式

2010-07-09 09:11:33

Ruby正則表達式

2020-09-04 09:16:04

Python正則表達式虛擬機

2018-09-27 15:25:08

正則表達式前端

2009-08-14 17:52:30

C#表達式工具

2024-09-14 09:18:14

Python正則表達式

2016-09-12 09:57:08

grep命令表達式Linux

2016-11-10 16:21:22

Java 正則表達式

2009-09-16 17:15:57

正則表達式引擎

2022-01-04 11:35:03

Linux Shel正則表達式Linux

2023-09-13 08:12:45

2010-08-13 15:23:10

Flex正則表達式

2017-05-12 10:47:45

Linux正則表達式程序基礎

2022-03-28 06:19:14

正則表達式開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 怡红院免费的全部视频 | 色视频欧美 | 国产69精品久久久久777 | 久久免费精品 | 色www精品视频在线观看 | 日韩久久久久久久久久久 | 超碰97免费观看 | 日日av| 亚洲视频精品在线 | 久久狼人天堂 | 成人在线观看免费视频 | 欧美夜夜 | 欧美久久一区二区三区 | 特黄视频 | 国产一区二区三区www | 欧美a区| 最新国产在线 | 免费性视频 | 午夜视频在线视频 | 中文字幕在线免费 | 精品精品 | 久久综合狠狠综合久久综合88 | 午夜爽爽爽男女免费观看 | 99热国产在线播放 | 一区二区三区影院 | 99re在线视频 | 久久黄色网 | 亚洲啪啪 | 日韩午夜 | 一区二区三区高清在线观看 | 中文字幕在线免费观看 | 国产精品2 | 水蜜桃久久夜色精品一区 | 午夜影院在线观看 | 午夜精品一区二区三区在线观看 | 中文字幕日韩一区 | 日本一区二区三区四区 | 国产黄色在线观看 | 成人免费在线播放 | 国产一区二区日韩 | 美女日批免费视频 |