成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

正則表達(dá)式難記點(diǎn)總結(jié)

劉永祥 / 2372人閱讀

摘要:正則表達(dá)式匹配但是不是使用正則表達(dá)式的方法提供了不少使用正則表達(dá)式的方法。當(dāng)正則表達(dá)式包含子表達(dá)式且不包含全局標(biāo)志時,二者返回相同的數(shù)組。示例當(dāng)正則表達(dá)式帶有全局標(biāo)志時,二者表現(xiàn)不一致。

一路以來遇到正則表達(dá)式的地方都是直接去百度的,因?yàn)楦杏X大部分遇到的正則表達(dá)式的地方都是很常見的。這次順便總結(jié)下正則表達(dá)式比較難記的部分,方便自己日后查閱吧( ̄. ̄)

正則表達(dá)式中的特殊字符

感覺MDN里面的資料還是挺不錯的,特此記錄下里面提到過的個人感覺比較難記的部分。

?:匹配前面一個表達(dá)式0次或者1次。等價于 {0,1}。此外,?還有一個比較重要的用途,即

如果?緊跟在任何量詞 *、 +、? 或 {} 的后面,將會使量詞變?yōu)榉秦澙返模ㄆヅ浔M量少的字符),和缺省使用的貪婪模式(匹配盡可能多的字符)正好相反。例如,對 "123abc" 應(yīng)用 /d+/ 將會返回 "123",如果使用 /d+?/,那么就只會匹配到 "1"。
還可以運(yùn)用于向前斷言,如 x(?=y) 和 x(?!y) 。

(x):捕獲括號。匹配 "x" 并且記住匹配項(xiàng)。在匹配中可以使用1、2、n表示括號中的內(nèi)容,而在替換中,則使用$1、$2、$n。

(:x): 非捕獲括號。匹配 "x" 但是不記住匹配項(xiàng)。

x(?=y):匹配"x"僅僅當(dāng)"x"后面跟著"y".這種叫做正向肯定查找。例如,/Jack(?=Sprat)/會匹配到"Jack"僅僅當(dāng)它后面跟著"Sprat"。/Jack(?=Sprat|Frost)/匹配‘Jack’僅僅當(dāng)它后面跟著"Sprat"或者是‘Frost’。但是‘Sprat’和‘Frost’都不是匹配結(jié)果的一部分。

x(!=y):匹配"x"僅僅當(dāng)"x"后面不跟著"y",這個叫做正向否定查找。例如,/d+(?!.)/匹配一個數(shù)字僅僅當(dāng)這個數(shù)字后面沒有跟小數(shù)點(diǎn)的時候。正則表達(dá)式/d+(?!.)/.exec("3.141")匹配‘141’但是不是‘3.141’

使用正則表達(dá)式的js方法

js提供了不少使用正則表達(dá)式的方法。如RegExp的exec,和String的match、replace、search和split方法。

當(dāng)你想要知道在一個字符串中的一個匹配是否被找到,你可以使用test或search方法;想得到更多的信息(但是比較慢)則可以使用exec或match方法。如果你使用exec或match方法并且匹配成功了,那么這些方法將返回一個數(shù)組并且更新相關(guān)的正則表達(dá)式對象的屬性和預(yù)定義的正則表達(dá)式對象(詳見下)。如果匹配失敗,那么exec方法返回null(也就是false)。

match與exec區(qū)別

從前往往傻傻分不清match和exec的區(qū)別,因?yàn)閮烧叩淖饔枚际瞧ヅ渥址?,返回?shù)組,但是在不同情況下兩者所返回的內(nèi)容是不同的。

當(dāng)正則表達(dá)式包含子表達(dá)式且不包含全局標(biāo)志g時,二者返回相同的數(shù)組。

// 示例:

var str = "cat10,bat20,kat30";
var patten = /w(at)d+/;
var arr = str.match(patten);
arr[0] <=> ["cat10"]
arr[1] <=> ["at"]

var arr = patten.exec(str);
arr[0] <=> ["cat10"]
arr[1] <=> ["at"]

當(dāng)正則表達(dá)式帶有全局標(biāo)志g時,二者表現(xiàn)不一致。
match會返回所有符合條件的匹配項(xiàng),并以數(shù)組形式返回。數(shù)組第一項(xiàng)存放第一個匹配項(xiàng),數(shù)組第二項(xiàng)存放第二個匹配項(xiàng)...依次類推。

exec則永遠(yuǎn)返回第一個匹配項(xiàng)。但是當(dāng)連續(xù)調(diào)用exec時,則每次的返回值都是下一個匹配項(xiàng)。

// 示例1:

var str = "cat,bat,kat";
var patten = /at/g;
str.match(patten);  //["at", "at", "at"]
patten.exec(str);  //["at"]


// 示例2:

var str = "cat,bat,kat";
var patten = /w+/g;
str.match(patten);  //["cat", "bat", "kat"]

//第一次調(diào)用
patten.exec(str);  //["cat"]
//第二次調(diào)用
patten.exec(str);  //["bat"]
//第三次調(diào)用
patten.exec(str);  //["kat"]

當(dāng)正則表達(dá)式包含子表達(dá)式時且包含全局標(biāo)志g時,二者表現(xiàn)不一致。
match會返回所有符合條件的匹配項(xiàng),并以數(shù)組形式返回。這時,match不會再返回子表達(dá)式的匹配項(xiàng)了。數(shù)組第一項(xiàng)存放第一個匹配項(xiàng),數(shù)組第二項(xiàng)存放第二個匹配項(xiàng)...依次類推。

exec會返回子表達(dá)式的匹配項(xiàng)。換句話說就是,數(shù)組第一項(xiàng)存放整個匹配項(xiàng),數(shù)組第二項(xiàng)存放第一個子表達(dá)式匹配項(xiàng),數(shù)組第三項(xiàng)存放第二個子表達(dá)式匹配項(xiàng)...依次類推。

// 示例:

var str = "cat10,bat20,kat30";
var patten = /w(at)d+/g;
var arr = str.match(patten);  //["cat10", "bat20", "kat30"]
var arr = patten.exec(str);
arr[0] <=> ["cat10"]
arr[1] <=> ["at"]

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/89054.html

相關(guān)文章

  • PHP小知識點(diǎn)

    摘要:那些瑣碎的知識點(diǎn)作者記錄的的很奇特很難記的知識點(diǎn)。易錯知識點(diǎn)整理注意和的區(qū)別中和都是輸出的作用,但是兩者之間還是有細(xì)微的差別。今天手頭不忙,總結(jié)一下,分享過程中掌握的知識點(diǎn)。 深入理解 PHP 之:Nginx 與 FPM 的工作機(jī)制 這篇文章從 Nginx 與 FPM 的工作機(jī)制出發(fā),探討配置背后的原理,讓我們真正理解 Nginx 與 PHP 是如何協(xié)同工作的。 PHP 那些瑣碎的知識...

    hover_lew 評論0 收藏0
  • 還不會正則達(dá)式?看這篇!

    摘要:匹配次匹配次匹配次匹配次匹配次,等價于匹配次,等價于元字符在正則表達(dá)式中有一些具有特殊含義的字母,被稱為元字符,簡言之,元字符就是描述字符的字符,它用于對字符表達(dá)式的內(nèi)容轉(zhuǎn)換及各種操作信息進(jìn)行描述。 showImg(https://segmentfault.com/img/remote/1460000018489886?w=2000&h=1125); 正則表達(dá)式是很多程序員,甚至是一些...

    go4it 評論0 收藏0
  • JavaScript中的正則達(dá)式

    摘要:是否有標(biāo)志對返回值有很大影響。參數(shù)限制返回值中分割元素數(shù)量方法返回一個由替換值替換一些或所有匹配的模式后的新字符串。 文章同步到github 正則在平時工作中用的非常多, 最開始接觸正則的時候感覺這個東東好難記啊,最近把正則的內(nèi)容整理了一下,寫成以下文章。 先給大家介紹一個在線解析正則的網(wǎng)站,來幫助我們理解正則,特別是復(fù)雜的正則表達(dá)式,非常好用 http://www.regexper....

    isLishude 評論0 收藏0
  • python爬蟲神器PyQuery的使用方法

    摘要:語法與幾乎完全相同,所以不用再去費(fèi)心去記一些奇怪的方法了。目前版本官方文檔簡介可讓你用的語法來對進(jìn)行操作。如果利用,對和的處理將更快。因此執(zhí)行上述操作之后,本身也發(fā)生了變化。操作同樣的原汁原味的語法運(yùn)行結(jié)果這不需要多解釋了吧。 前言 你是否覺得 XPath 的用法多少有點(diǎn)晦澀難記呢? 你是否覺得 BeautifulSoup 的語法多少有些慳吝難懂呢? 你是否甚至還在苦苦研究正則表達(dá)式卻...

    codecraft 評論0 收藏0
  • 正則達(dá)式

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

    bang590 評論0 收藏0

發(fā)表評論

0條評論

劉永祥

|高級講師

TA的文章

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