亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

正則表達(dá)式(一)

Ajian / 3348人閱讀

摘要:基本概念正則表達(dá)式是一種文本模式,包括普通字符例如,到之間的字母和特殊字符稱為元字符。所以還要對(duì)正則的啟始位置進(jìn)行限制第一部分簡單回顧了正則表達(dá)式的基礎(chǔ)知識(shí),下一部分重點(diǎn)介紹正則的分組語法和常用方法

前言

正則表達(dá)式在編碼中會(huì)經(jīng)常使用到,但是平時(shí)只是需要的時(shí)候就去看看。往往看到那些元字符、量詞就直接跳過,直接百度了,一直沒有很深入的去了解,現(xiàn)在有時(shí)間就簡單總結(jié)一下。

基本概念

正則表達(dá)式是一種文本模式,包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為“元字符”)。模式描述在搜索文本時(shí)要匹配的一個(gè)或多個(gè)字符串。

正則使用場景:

1. 檢查文本中是否含有指定的特征詞
2. 找出文中匹配特征詞的位置
3. 從文本中提取信息,比如:字符串的子串
4. 修改文本
元字符

元字符是在正則表達(dá)式中你有特殊含義的非字母字符。元字符必須轉(zhuǎn)義

( ) [ ] { } ^ $ | ? * + .

修飾符

g: global,全文搜索,如果不添加,搜索到第一個(gè)匹配就停止。

i: ignore case,忽略大小寫,默認(rèn)大小寫敏感。

m: mutiple lines,多行搜索

字符類匹配
字符 匹配
[...] 匹配方括號(hào)內(nèi)的任意字符 例如[abcd]
[^ x ] 匹配除了x以外的任意字符 例如 [^abcd] 匹配除了abcd以外的任意字符
. 匹配除了換行符
s 匹配任意的空白符
S 匹配任意不是空白符的字符
w 匹配字母或者數(shù)字、下劃線、漢字 等價(jià)于[a-zA-Z0-9]
W 匹配不是字母或者數(shù)字、下劃線、漢字
d 匹配任意數(shù)字
D 匹配任意非數(shù)字的字符
 匹配單詞的開始或者結(jié)束的位置
重復(fù)字符匹配
字符 匹配
{n,m} 匹配前一項(xiàng)至少n次,但不能超過m次
{n,} 匹配前一項(xiàng)n次或更多次
{n} 匹配前一項(xiàng)n次
匹配前一項(xiàng)0次或者1次,也就是說前一項(xiàng)是可選的,等價(jià)于{0,1}
+ 匹配前一項(xiàng)1次或多次,等價(jià)于{1,}
* 匹配前一項(xiàng)0次或多次,等價(jià)于{0,}
字符類:錨字符 匹配
元字符/元符號(hào) 匹配
$ 匹配字符串的結(jié)尾,在多行檢索中,匹配一行的結(jié)尾
^ 匹配字符串的開頭,在多行檢索中,匹配一行的開頭
A 只有匹配字符串開始處
b 匹配單詞邊界,詞在 []內(nèi)時(shí)無效
B 匹配非單詞邊界
G 匹配當(dāng)前搜索的開始位置
 匹配字符串結(jié)束處或行尾
z 只匹配字符串結(jié)束處
字符類:記錄字符 匹配
元字符/元符號(hào) 匹配情況
(string) 用于反向引用的分組
1 或$1 匹配第一個(gè)分組中的內(nèi)容
2 或$2 匹配第二個(gè)分組中的內(nèi)容
3 或$3 匹配第三個(gè)分組中的內(nèi)容
正則表達(dá)式修飾符
字符      含義
i        執(zhí)行不區(qū)分大小寫的匹配
g        執(zhí)行一個(gè)全局匹配,即找到所有匹配而非一次匹配
m        多行匹配模式,^匹配一行的開頭和字符串開頭,$匹配行的結(jié)束和字符串的結(jié)尾

構(gòu)造方式

1.字面量

var pattern = /is/g;
 

eg:var reg1=/hello world (w*)/gi;

2.構(gòu)造函數(shù)

var pattern = new RegExp("is", "g");

new RegExp("正則表格式字符串",正則表達(dá)式修飾符);

注意??: 因?yàn)闃?gòu)造函數(shù)中使用的是字符串,由于字符串轉(zhuǎn)義問題,""代表""。
RegExp對(duì)象方法

RegExp對(duì)象給我們提供了三種方法供我們使用,分別是test()、exec()和compile()。下面具體說一下這三個(gè)方法的用處。

1.test()

檢索字符串中指定的值。返回 true 或 false。這個(gè)是我們平時(shí)最常用的方法。

 var reg=/hello w{3,12}/;
 alert(reg.test("hello js"));//false
 alert(reg.test("hello javascript"));//true

2.exec()

檢索字符串中指定的值。匹配成功返回一個(gè)數(shù)組,匹配失敗返回null。

var reg=/hello/; 
console.log(reg.exec("hellojs"));//["hello"]
console.log(reg.exec("javascript"));//null

3.compile()

compile() 方法用于改變 RegExp。
compile() 既可以改變檢索模式,也可以添加或刪除第二個(gè)參數(shù)。

var reg=/hello/;
console.log(reg.exec("hellojs"));//["hello"]
reg.compile("Hello");
console.log(reg.exec("hellojs"));//null
reg.compile("Hello","i");
console.log(reg.exec("hellojs"));//["hello"]  
舉幾個(gè)例子

1.匹配下面的電話號(hào)碼:

     1. (010)88886666  
     2.  022-22334455  
     3.  02912345678

 /(?0d{2}[)-]?d{8}/;
 

驗(yàn)證如下

var regex = /(?0d{2}[)-]?d{8}/;
regex.test(" 02912345678")
regex.test(" 022-22334455")
regex.test("(010)88886666")
true

2.匹配ip地址
IP地址格式可表示為:XXX.XXX.XXX.XXX,XXX取值范圍是0-255,前三段加一個(gè).重復(fù)了三次,在與最后一段合并及組成IP地址的完整格式。
最簡單的寫法 /([0-9]{1,3}.){3}[0-9]{1,3}/
但是這樣會(huì)匹配到很多無效的ip xxx的范圍超過255.
所以對(duì)這個(gè)寫法進(jìn)行改進(jìn)

當(dāng)xxx只有一位的時(shí)候 取值的范圍是[1-9] 可以表示為[1-9]

當(dāng)xxx為兩位時(shí) 取值范圍為[0-99] 可以表示為 [1-9]d

當(dāng)xxx為三位數(shù)時(shí)最高位取值為1 取值范圍為[100 - 199] 可以表示為[1]d{2}
最高位取值為2 第二位不超過5時(shí) 取值范圍為[200 - 249] 可以表示為2[0-4]d
最高位取值為2,十位取值5,個(gè)位取值0-5 取值范圍為 [250 - 255] 表示為 25[0-5]

將這三種情況合并可以表示(25[0-5]|2[0-4]d|((1d{2})|([1-9]?d)))

整個(gè)ip的正則可以表示為
((25[0-5]|2[0-4]d|((1d{2})|([1-9]?d))).){3}(25[0-5]|2[0-4]d|((1d{2})|([1-9]?d)))
但是這還存在問題 現(xiàn)在只要字符串中有一部分能夠通過校驗(yàn)test就會(huì)返回true 例如2313.2.3.4。

var regex = /((25[0-5]|2[0-4]d|((1d{2})|([1-9]?d))).){3}(25[0-5]|2[0-4]d|((1d{2})|([1-9]?d)))/;
regex.test("3424.2.3.2");
true

所以還要對(duì)正則的啟始位置進(jìn)行限制

var regex = /^((25[0-5]|2[0-4]d|((1d{2})|([1-9]?d))).){3}(25[0-5]|2[0-4]d|((1d{2})|([1-9]?d)))$/;
regex.test("3424.2.3.2");
false

第一部分簡單回顧了正則表達(dá)式的基礎(chǔ)知識(shí),下一部分重點(diǎn)介紹正則的分組語法 和 常用方法

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/90001.html

相關(guān)文章

  • 正則達(dá)式

    摘要:本文內(nèi)容共正則表達(dá)式火拼系列正則表達(dá)式回溯法原理學(xué)習(xí)正則表達(dá)式,是需要懂點(diǎn)兒匹配原理的。正則表達(dá)式迷你書問世了讓幫你生成和解析參數(shù)字符串最全正則表達(dá)式總結(jié)驗(yàn)證號(hào)手機(jī)號(hào)中文郵編身份證地址等是正則表達(dá)式的縮寫,作用是對(duì)字符串執(zhí)行模式匹配。 JS 的正則表達(dá)式 正則表達(dá)式 一種幾乎可以在所有的程序設(shè)計(jì)語言里和所有的計(jì)算機(jī)平臺(tái)上使用的文字處理工具。它可以用來查找特定的信息(搜索),也可以用來查...

    bang590 評(píng)論0 收藏0
  • JavaScript正則達(dá)式的匹配模式

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

    wqj97 評(píng)論0 收藏0
  • JS正則達(dá)式條龍講解,從原理和語法到JS正則、ES6正則擴(kuò)展,最后再到正則實(shí)踐思路

    摘要:控制權(quán)和傳動(dòng)這兩個(gè)詞可能在搜一些博文或者資料的時(shí)候會(huì)遇到,這里做一個(gè)解釋先控制權(quán)是指哪一個(gè)正則子表達(dá)式可能為一個(gè)普通字符元字符或元字符序列組成在匹配字符串,那么控制權(quán)就在哪。 溫馨提示:文章很長很長,保持耐心,必要時(shí)可以跳著看,當(dāng)然用來查也是不錯(cuò)的。 正則啊,就像一座燈塔,當(dāng)你在字符串的海洋不知所措的時(shí)候,總能給你一點(diǎn)思路;正則啊,就像一臺(tái)驗(yàn)鈔機(jī),在你不知道用戶提交的鈔票真假的時(shí)候,...

    Michael_Lin 評(píng)論0 收藏0
  • Python正則達(dá)式很難?篇文章搞定他,不是我吹!

    摘要:正則表達(dá)式語法字符與字符類特殊字符以上特殊字符要想使用字面值,必須使用進(jìn)行轉(zhuǎn)義字符類包含在中的一個(gè)或者多個(gè)字符被稱為字符類,字符類在匹配時(shí)如果沒有指定量詞則只會(huì)匹配其中的一個(gè)。 1. 正則表達(dá)式語法 1.1 字符與字符類 1 特殊字符:.^$?+*{}| 以上特殊字符要想使用字面值,必須使用進(jìn)行轉(zhuǎn)義 2 字符類 1. 包含在[]中的一個(gè)或者多個(gè)字符被稱為字符類,字符類在匹配時(shí)如果沒有指...

    dcr309duan 評(píng)論0 收藏0
  • JavaScript正則達(dá)式RegExp

    摘要:的正則表達(dá)式體系是參照建立的。字面量形式構(gòu)造函數(shù)形式以上都是創(chuàng)建了一個(gè)內(nèi)容為的正則表達(dá)式,其表示對(duì)一個(gè)手機(jī)號(hào)碼的校驗(yàn)。按照給定的正則表達(dá)式進(jìn)行替換,返回替換后的字符串。 正則表達(dá)式,也稱規(guī)則表達(dá)式,經(jīng)常使用其來完成對(duì)字符串的校驗(yàn)和過濾。由于正則表達(dá)式的靈活性、邏輯性和功能性都非常強(qiáng)大,而且 可以利用很簡單的方式完成對(duì)復(fù)雜字符串的控制,所以很多程序語言都支持正則表達(dá)式。在JavaScri...

    SexySix 評(píng)論0 收藏0
  • JavaScript 中的正則達(dá)式

    摘要:正則表達(dá)式的意義中的正則表達(dá)式使用表示,可以使用構(gòu)造函數(shù)來創(chuàng)建對(duì)象,不過對(duì)象更多的是通過一種特殊的直接量語法來創(chuàng)建。用構(gòu)造函數(shù)也可以定義一個(gè)與之等價(jià)的正則表達(dá)式,代碼如下正則表達(dá)式的模式規(guī)則是由一個(gè)字符序列組成的。 正則表達(dá)式的模式匹配 正則表達(dá)式(regular expression)是一個(gè)描述字符模式的對(duì)象。javascript的RegExp對(duì)象表示正則表達(dá)式,String和Reg...

    _Dreams 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<