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

資訊專(zhuān)欄INFORMATION COLUMN

正則表達(dá)式基礎(chǔ)筆記

Enlightenment / 1904人閱讀

摘要:參考資料慕課網(wǎng)鬼斧神工之正則表達(dá)式正則表達(dá)式后向引用詳解正則表達(dá)式分鐘入門(mén)教程什么是正則表達(dá)式正則表達(dá)式是字符串的搜索和匹配的工具。貪婪模式懶惰模式后向引用分組捕獲的內(nèi)容可以在表達(dá)式或其他程序中作進(jìn)一步的處理。

參考資料

慕課網(wǎng)-鬼斧神工之正則表達(dá)式
正則表達(dá)式后向引用詳解
正則表達(dá)式30分鐘入門(mén)教程

什么是正則表達(dá)式?

正則表達(dá)式是字符串的搜索和匹配的工具。

正則表達(dá)式工具

一個(gè)測(cè)試正則表達(dá)式的工具 regexpal -- 中文版

基本語(yǔ)法 界定符 //

表示一個(gè)正則表達(dá)式的開(kāi)始和結(jié)束

/0-9/ 界定符就是包含正則表達(dá)式在中間的兩個(gè)斜杠

原子 可見(jiàn)原子

標(biāo)點(diǎn)

英文字母數(shù)字

漢字、日文、阿拉伯文等語(yǔ)言文字

數(shù)理化公式符號(hào)

其他可見(jiàn)字符

不可見(jiàn)原子

換行符

回車(chē)

制表符

空格

其他不可見(jiàn)的符號(hào)

字符轉(zhuǎn)義

如果想查找元字符本身的話,就要使用 來(lái)取消這些字符的特殊意義
例如:. *

元字符 定義原子的篩選方式
代碼 / 語(yǔ)法 說(shuō)明
匹配兩個(gè)或多個(gè)分支選擇
[] 匹配方括號(hào)中的任意一個(gè)原子
[^] 匹配除了方括號(hào)中的原子之外的任意字符
原子的集合
代碼 / 語(yǔ)法 說(shuō)明
. 匹配除換行符以外的任何字符 [^ ]
d 匹配數(shù)字 [0-9]
D 匹配非數(shù)字 [^0-9]
s 匹配一個(gè)不可見(jiàn)原子 [f v]
S 匹配一個(gè)可見(jiàn)原子 [^f v]
w 匹配字母或數(shù)字或下劃線 [0-9a-zA-Z_]
W 匹配非字母或數(shù)字或下劃線 [^0-9a-zA-Z_]
// 匹配一個(gè)或者更多連續(xù)的數(shù)字
var pattern = /d+/;
/*
* 比如一個(gè)網(wǎng)站要求你填寫(xiě)的 QQ 號(hào)必須是 5-12 位的數(shù)字時(shí),可以使用 ^d{5,12}$
* {5,12} 表示重復(fù)次數(shù)不少于 5 次,不能多于 12 次,否則都不匹配
* 有些正則表達(dá)式處理工具還有一個(gè)處理多行的選項(xiàng),如果選中了這個(gè)選項(xiàng)
* ^ 和 $ 的意義就變成了匹配行的開(kāi)始處和結(jié)束處
*/
量詞

限定符 -- 指定數(shù)量的代碼

代碼 / 語(yǔ)法 說(shuō)明
* 重復(fù) 0 次或更多次
+ 重復(fù)一次或更多次
? 重復(fù) 0 次或 1 次
{n} 恰好重復(fù) n 次
{n, } 最少重復(fù) n 次
{n, m} 重復(fù) n 次到 m 次
// 匹配剛好 6 個(gè)字符的單詞
var pattern = /w{6}/;
邊界控制
代碼 / 語(yǔ)法 說(shuō)明
^ 匹配字符串開(kāi)始的位置
$ 匹配字符串結(jié)尾的位置
 匹配單詞的開(kāi)始或結(jié)束
B 匹配非單詞的開(kāi)始或結(jié)束
使用示例
// 匹配以字母 a 開(kāi)頭的單詞
var pattern = /aw*/;

/*
* 先是某個(gè)單詞的開(kāi)頭處 
* 然后是字母 a
* 然后是任意數(shù)量的字母或數(shù)字 w*
* 最后是單詞的結(jié)束處 
*/
分組
代碼 / 語(yǔ)法 說(shuō)明
() 匹配其中的整體作為原子

重復(fù)單個(gè)字符,直接在字符后面加上限定符就行了;
如果想要重復(fù)多個(gè)字符,可以用小括號(hào)來(lái)指定 子表達(dá)式(也叫 分組),然后可以指定這個(gè) 分組的重復(fù)次數(shù),也可以對(duì)這個(gè) 分組進(jìn)行其他的一些操作。

// 這個(gè)表達(dá)式可以匹配幾種格式的電話號(hào)碼,像 `(010)88886666`,或 `022-22334455`,或 `02912345678` 等
var pattern = /(?0d{2}[) -]?d{8}/;

首先是一個(gè)轉(zhuǎn)義字符 (,他能出現(xiàn) 1 次或 0 次(?

然后是一個(gè) 0,后面跟著兩個(gè)數(shù)字 d{2}

然后是 )空格- 中的一個(gè),它出現(xiàn) 1 次或不出現(xiàn) [) -]?

最后是 8 個(gè)數(shù)字 d{8}

修正模式

修正模式可以理解成是給正則表達(dá)式的匹配過(guò)程指定一種模式。

貪婪模式 & 懶惰模式

匹配結(jié)果怎么會(huì)有歧義呢?看看下面的代碼就知道了:

var pattern = /mertens.+1994/; 
var str = "mertens__199419941994199419941994";

上面那段代碼就是有歧義的了,看上去可以是匹配到 mertens__199419941994199419941994,也可能匹配到 mertens__1994。

貪婪:匹配結(jié)果存在歧義的時(shí)候取其長(zhǎng)
懶惰:匹配結(jié)果存在歧義的時(shí)候取其短

未經(jīng)修飾的量詞就是貪心量詞,末尾加上?則使量詞變懶惰。

// 貪婪模式
var pattern1 = /mertens.+1994/; 
var str = "mertens__199419941994199419941994";
var result1 = str.match(pattern1);
console.log(result1); // mertens__199419941994199419941994

// 懶惰模式
var pattern2 = /mertens.+?1994/; 
var str = "mertens__199419941994199419941994";
var result2 = str.match(pattern2);
console.log(result2); // mertens__1994
后向引用

分組捕獲的內(nèi)容可以在表達(dá)式或其他程序中作進(jìn)一步的處理。

組號(hào)

默認(rèn)情況下,每個(gè)分組會(huì)自動(dòng)擁有一個(gè)組號(hào)

分配組號(hào)的規(guī)則是:從左向右,以分組的左括號(hào)為標(biāo)志,第一個(gè)出現(xiàn)的分組的組號(hào)為 1,第二個(gè)為 2,以此類(lèi)推。

后向引用用于重復(fù)搜索前面某個(gè)分組匹配的文本。

// 1 表示分組 1 匹配的某個(gè)文本
// 匹配連著的兩個(gè)重復(fù)的單詞
var pattern = /(w+)s+1/;
組名

可以 指定子表達(dá)式的組名

// 可以指定組名為 Word
// 使用這樣的語(yǔ)法:(?w+)
// 把尖括號(hào)換成"也行:(?"Word"w+))
// 這樣就把w+的組名指定為 Word 了
// 要反向引用這個(gè)分組捕獲的內(nèi)容,可以使用 k
var pattern = /(?w+) (?"Wrod"w+)/;

// 上一個(gè)例子也可以寫(xiě)成這樣
var pattern = /(?w+)s+k/;
零寬斷言(zero-length assertions)

使用小括號(hào)的時(shí)候,還有很多特定用途的語(yǔ)法:

零寬的意思是指該位置是不占寬度的,也就是只作斷言判斷,但不匹配實(shí)際的內(nèi)容;
d(?=.) 這個(gè)正向先行斷言就只匹配點(diǎn)號(hào)之前的數(shù)字,但是它并不會(huì)匹配到這個(gè)點(diǎn)號(hào),這個(gè) d(?=.) 括號(hào)中的匹配內(nèi)容也就是零寬了。

零寬斷言分為四種,分別是:
正向先行(Positive Lookahead)
正向回顧(Positive Lookbehind)
負(fù)向先行(Negative Lookahead)
負(fù)向回顧(Negative Lookbehind)

正向負(fù)向 的意思是斷言括號(hào)中的內(nèi)容是匹配還是不匹配

先行回顧 的意思是實(shí)際匹配的內(nèi)容在斷言?xún)?nèi)容的前面還是后面

正向先行(Positive Lookahead)

直接地說(shuō)“零寬正向先行斷言”所匹配的就是 必須出現(xiàn)的斷言?xún)?nèi)容的前面的內(nèi)容

正向回顧(Positive Lookbehind)

理解了前面這個(gè)“零寬正向先行斷言”,隨之而來(lái)的就比較好理解了。依照這個(gè)邏輯,零寬正向回顧斷言所匹配的是必須出現(xiàn)的斷言?xún)?nèi)容之后的內(nèi)容,它的語(yǔ)法是:(?<=...) 比如 (?<=.)w 所匹配的就是點(diǎn)號(hào)之后的 ASCII 字符。

負(fù)向先行(Negative Lookahead)

負(fù)向與正向意思相反, 正向是斷言?xún)?nèi)容必須出現(xiàn),而負(fù)向則是斷言?xún)?nèi)容必須不出現(xiàn)。

負(fù)向回顧(Negative Lookbehind)

正負(fù)向與先行回顧的概念都已在前面列出, 負(fù)向回顧的理解應(yīng)該就很順了。負(fù)向回顧的語(yǔ)法是:(?。 比如 (? 該正則只匹配不是 JavaScript 的 Script,它就能正確匹配 ECMAScript 和 Script。

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

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

相關(guān)文章

  • 《javascript高級(jí)程序設(shè)計(jì)》筆記正則達(dá)式

    摘要:布爾值,表示是否設(shè)置了標(biāo)志。正則表達(dá)式的字符串表示,按照字面量形式而非傳入構(gòu)造函數(shù)中的字符串模式返回正則表達(dá)式的實(shí)例方法方法是否匹配基本語(yǔ)法參數(shù)為正則表達(dá)式為所要匹配的字符串返回值布爾值在模式與該參數(shù)匹配的情況下返回否則,返回。 高程書(shū)中對(duì)正則部分介紹的偏少,特別是元字符部分幾乎沒(méi)有介紹;我找了幾篇不錯(cuò)的博客作為收錄:正則表達(dá)式30分鐘入門(mén)教程正則表達(dá)式-理論基礎(chǔ)篇正則表達(dá)式-基礎(chǔ)實(shí)戰(zhàn)...

    ingood 評(píng)論0 收藏0
  • 《Java編程思想》筆記13.字符串

    摘要:的構(gòu)造器經(jīng)過(guò)重載可以接受多種輸出目的地,不過(guò)最常用的還是和。組號(hào)為表示整個(gè)表達(dá)式,組號(hào)表示被第一對(duì)括號(hào)括起的組,依此類(lèi)推。有多個(gè)重載的構(gòu)造器,可以接受和對(duì)象。 點(diǎn)擊進(jìn)入我的博客 字符串操作是計(jì)算機(jī)程序設(shè)計(jì)中最常見(jiàn)的行為 13.1 不可變String String底層是由char[]實(shí)現(xiàn)的,是不可變的??雌饋?lái)會(huì)改變String的方法,實(shí)際上都是創(chuàng)建了一個(gè)新的String對(duì)象,任何指向它...

    since1986 評(píng)論0 收藏0
  • JavaScript正則達(dá)式學(xué)習(xí)筆記(二) - 打怪升級(jí)

    摘要:本文接上篇,基礎(chǔ)部分相對(duì)薄弱的同學(xué)請(qǐng)移步正則表達(dá)式學(xué)習(xí)筆記一理論基礎(chǔ)。正則表達(dá)式標(biāo)志符全局匹配,即找到所有匹配的。方法返回結(jié)果的格式不一致問(wèn)題這個(gè)問(wèn)題上文正則表達(dá)式學(xué)習(xí)筆記一理論基礎(chǔ)也有體現(xiàn),這里再單獨(dú)拿來(lái)說(shuō)一說(shuō),以加深記憶。 showImg(https://segmentfault.com/img/remote/1460000014261596?w=600&h=338); 本文接上篇...

    Jioby 評(píng)論0 收藏0
  • 深入理解ES6筆記(二)字符串和正則表達(dá)

    摘要:主要知識(shí)點(diǎn)新增的字符串處理方法模板字面量以及正則表達(dá)式上的改動(dòng)深入理解筆記目錄字符串字符串是大原始數(shù)據(jù)類(lèi)型。如果在字符串的結(jié)束部分檢測(cè)到指定文本,返回,否則返回。字符串內(nèi)插入反撇號(hào)的方式。 主要知識(shí)點(diǎn):新增的字符串處理方法、模板字面量以及正則表達(dá)式上的改動(dòng)showImg(https://segmentfault.com/img/bVbfWak?w=861&h=622); 《深入理解E...

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

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

0條評(píng)論

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