摘要:正則表達式匹配但是不是使用正則表達式的方法提供了不少使用正則表達式的方法。當正則表達式包含子表達式且不包含全局標志時,二者返回相同的數組。示例當正則表達式帶有全局標志時,二者表現不一致。
一路以來遇到正則表達式的地方都是直接去百度的,因為感覺大部分遇到的正則表達式的地方都是很常見的。這次順便總結下正則表達式比較難記的部分,方便自己日后查閱吧( ̄. ̄)
正則表達式中的特殊字符感覺MDN里面的資料還是挺不錯的,特此記錄下里面提到過的個人感覺比較難記的部分。
?:匹配前面一個表達式0次或者1次。等價于 {0,1}。此外,?還有一個比較重要的用途,即
如果?緊跟在任何量詞 *、 +、? 或 {} 的后面,將會使量詞變為非貪婪的(匹配盡量少的字符),和缺省使用的貪婪模式(匹配盡可能多的字符)正好相反。例如,對 "123abc" 應用 /d+/ 將會返回 "123",如果使用 /d+?/,那么就只會匹配到 "1"。
還可以運用于向前斷言,如 x(?=y) 和 x(?!y) 。
(x):捕獲括號。匹配 "x" 并且記住匹配項。在匹配中可以使用1、2、n表示括號中的內容,而在替換中,則使用$1、$2、$n。
(:x): 非捕獲括號。匹配 "x" 但是不記住匹配項。
x(?=y):匹配"x"僅僅當"x"后面跟著"y".這種叫做正向肯定查找。例如,/Jack(?=Sprat)/會匹配到"Jack"僅僅當它后面跟著"Sprat"。/Jack(?=Sprat|Frost)/匹配‘Jack’僅僅當它后面跟著"Sprat"或者是‘Frost’。但是‘Sprat’和‘Frost’都不是匹配結果的一部分。
x(!=y):匹配"x"僅僅當"x"后面不跟著"y",這個叫做正向否定查找。例如,/d+(?!.)/匹配一個數字僅僅當這個數字后面沒有跟小數點的時候。正則表達式/d+(?!.)/.exec("3.141")匹配‘141’但是不是‘3.141’
使用正則表達式的js方法js提供了不少使用正則表達式的方法。如RegExp的exec,和String的match、replace、search和split方法。
當你想要知道在一個字符串中的一個匹配是否被找到,你可以使用test或search方法;想得到更多的信息(但是比較慢)則可以使用exec或match方法。如果你使用exec或match方法并且匹配成功了,那么這些方法將返回一個數組并且更新相關的正則表達式對象的屬性和預定義的正則表達式對象(詳見下)。如果匹配失敗,那么exec方法返回null(也就是false)。
match與exec區別從前往往傻傻分不清match和exec的區別,因為兩者的作用都是匹配字符串,返回數組,但是在不同情況下兩者所返回的內容是不同的。
當正則表達式包含子表達式且不包含全局標志g時,二者返回相同的數組。
// 示例: 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"]
當正則表達式帶有全局標志g時,二者表現不一致。
match會返回所有符合條件的匹配項,并以數組形式返回。數組第一項存放第一個匹配項,數組第二項存放第二個匹配項...依次類推。
exec則永遠返回第一個匹配項。但是當連續調用exec時,則每次的返回值都是下一個匹配項。
// 示例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"] //第一次調用 patten.exec(str); //["cat"] //第二次調用 patten.exec(str); //["bat"] //第三次調用 patten.exec(str); //["kat"]
當正則表達式包含子表達式時且包含全局標志g時,二者表現不一致。
match會返回所有符合條件的匹配項,并以數組形式返回。這時,match不會再返回子表達式的匹配項了。數組第一項存放第一個匹配項,數組第二項存放第二個匹配項...依次類推。
exec會返回子表達式的匹配項。換句話說就是,數組第一項存放整個匹配項,數組第二項存放第一個子表達式匹配項,數組第三項存放第二個子表達式匹配項...依次類推。
// 示例: 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"]
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/89054.html
摘要:匹配次匹配次匹配次匹配次匹配次,等價于匹配次,等價于元字符在正則表達式中有一些具有特殊含義的字母,被稱為元字符,簡言之,元字符就是描述字符的字符,它用于對字符表達式的內容轉換及各種操作信息進行描述。 showImg(https://segmentfault.com/img/remote/1460000018489886?w=2000&h=1125); 正則表達式是很多程序員,甚至是一些...
摘要:是否有標志對返回值有很大影響。參數限制返回值中分割元素數量方法返回一個由替換值替換一些或所有匹配的模式后的新字符串。 文章同步到github 正則在平時工作中用的非常多, 最開始接觸正則的時候感覺這個東東好難記啊,最近把正則的內容整理了一下,寫成以下文章。 先給大家介紹一個在線解析正則的網站,來幫助我們理解正則,特別是復雜的正則表達式,非常好用 http://www.regexper....
摘要:語法與幾乎完全相同,所以不用再去費心去記一些奇怪的方法了。目前版本官方文檔簡介可讓你用的語法來對進行操作。如果利用,對和的處理將更快。因此執行上述操作之后,本身也發生了變化。操作同樣的原汁原味的語法運行結果這不需要多解釋了吧。 前言 你是否覺得 XPath 的用法多少有點晦澀難記呢? 你是否覺得 BeautifulSoup 的語法多少有些慳吝難懂呢? 你是否甚至還在苦苦研究正則表達式卻...
閱讀 1329·2021-11-15 11:37
閱讀 2213·2021-09-23 11:21
閱讀 1299·2019-08-30 15:55
閱讀 2105·2019-08-30 15:55
閱讀 2815·2019-08-30 15:52
閱讀 2818·2019-08-30 11:12
閱讀 1572·2019-08-29 18:45
閱讀 1885·2019-08-29 14:04