麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Regex > 正文

僅1個例子輕松學習正則表達式

2020-03-16 21:01:28
字體:
供稿:網(wǎng)友
這篇文章主要通過舉例理解正則表達式,從一個例子深入解析正則表達式的使用方法,感興趣的小伙伴們可以參考一下
 

正則表達式的語法就不多說了,大家可以自己搜索查閱相關(guān)資料學習。本文所舉例子是在《JavaScript語言精粹》上看到的,看完之后對正則表達式有了進一步的理解,故分享之。

例子

//這是一個用來匹配URL的正則表達式,分組獲取不同部分的信息var parse_url = /^(?:([A-Za-z]+):)?(//{0,3})([0-9./-A-Za-z]+)(?::(/d+))?(?://([^?#]*))?(?:/?([^#]*))?(?:#(.*))?$/;var url = "http://www.ora.com:80/goodparts?q#fragment";var result = parse_url.exec(url);var names = ["url", "scheme", "slash", "host", "port", "path", "query", "hash"];var i;for (i = 0; i < names.length; i++) { document.writeln(names[i] + ": " + result[i] + "<br/>");}//這段代碼的輸出結(jié)果如下:url: http://www.ora.com:80/goodparts?q#fragmentscheme: httpslash: //host: www.ora.comport: 80path: goodpartsquery: qhash: fragment

解析
下面讓我們分解parse_url的各個部分,看看它是如何工作的:

^

^字符表示此字符串的開始,它是一個錨,指引exec不要跳過那些不像URL的前綴,只匹配那些從開頭就像URL一樣的字符串。

(?:([A-Za-z]+):)?

這個因子匹配一個協(xié)議名,但僅當它后面跟隨一個 :(冒號)的時候才匹配。(?: . . .)表示一個非捕獲型分組(noncapturing group)。后綴 ? 表示這個分組是可選的,它表示重復(fù)0次或1次。( . . .)表示一個捕獲型分組。一個捕獲型分組會復(fù)制它所匹配的文本,并把其放到result數(shù)組里。每個捕獲型分組都會被指定一個編號。第一個捕獲型分組的編號是1,所以該分組所匹配的文本副本會出現(xiàn)在result[1]中。 [ . . .]表示一個字符類。A-Za-z這個字符類包含26個大寫字母和26個小寫字母。連接字符 - 表示范圍從A-Z。后綴 + 表示這個字符類會被匹配一次或多次。這個組后面跟著字符 : ,它會按字面進行匹配。 

(//{0,3})

這個因子是捕獲型分組2,匹配//。/ /表示應(yīng),該匹配 / (斜杠)。它用 / (反斜杠)來進行轉(zhuǎn)義,這樣它就不會被錯誤地解釋為這個正則表達式的結(jié)束符。后綴 {0,3} 表示 / 會匹配0~3次。

([0-9./-A-Za-z]+)

這個因子是捕獲型分組3。它會匹配一個主機名,由一個或多個數(shù)字、字母以及 . 或 - 字符組成。- 會被轉(zhuǎn)義為 /- 以防止與表示范圍的連字符相混淆。

(?::(/d+))?

這個可選的因子匹配端口號,它是由一個前置 : 加上一個或多個數(shù)字而組成的序列。/d表示一個數(shù)字字符。一個或多個數(shù)字組成的數(shù)字串會被捕獲型分組4捕獲。

(?://([^?#]*))?

這個因子也是可選的分組,匹配路徑。該分組以一個 / 開始。之后的字符類[^?#]以一個^開始,它表示這個類包含除 ? 和 # 之外的所有字符。* 表示這個字符類會被匹配0次或多次。

注意我在這里的處理是不嚴謹?shù)摹_@個類匹配除 ? 和 # 之外的所有字符,其中包括了行結(jié)束符、控制字符、以及其他大量不應(yīng)在此被匹配的字符。大多數(shù)情況下,它會按照我們的預(yù)期去做,但某些惡意文本可能會有滲漏進來的風險。不嚴謹?shù)恼齽t表示式是一個常見的安全漏洞發(fā)源地。寫不嚴謹?shù)恼齽t表達式比寫嚴謹?shù)恼齽t表示式要容易的多。 

(?:/?([^#]*))?

這個因子是一個以一個 ? 開始的可選分組。它包含捕獲型分組6,這個分組包含0個或多個非#字符。

(?:#(.*))?

這個因子是以 # 開始的可選分組。. 會匹配除行結(jié)束符以外的所有字符。

$

$表示這個字符串的結(jié)束。它保證在這個URL的尾部沒有其他更多的內(nèi)容了。

通過這個簡單例子,相信大家對正則表達式有了更進一步的理解,祝大家學習愉快!



注:相關(guān)教程知識閱讀請移步到正則表達式頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 一本色道久久99精品综合蜜臀 | 中文字幕在线观看91 | 8x成人在线电影 | 亚洲va久久久噜噜噜久牛牛影视 | 18pao国产成人免费视频 | av亚洲在线观看 | 免费观看又色又爽又黄的崩锅 | 国产精品伦视频看免费三 | freexxx69性欧美hd | 久艹在线视频 | av电影在线观看网站 | 亚州精品天堂中文字幕 | 久久影院国产精品 | 黄色av电影在线播放 | 韩国一级免费视频 | 91网视频 | 九九热在线视频观看 | 国产区二区 | 欧美成人精品一区二区三区 | 成人毛片视频在线观看 | 国产91丝袜在线播放 | 欧美日韩成人一区二区 | 成人福利网 | 国产超碰人人爽人人做人人爱 | 久久另类视频 | 深夜视频在线观看 | 久草在线高清视频 | 91麻豆精品国产91久久久点播时间 | 麻豆蜜桃在线观看 | 天堂在线中文资源 | 国产91亚洲精品久久久 | 久章草影院 | 欧美日韩大片在线观看 | 日本一区二区三区视频在线 | 日韩不卡一区二区 | 精品成人网 | 91成人久久 | 性生活香蕉视频 | 欧美一级片 在线播放 | 5xsq在线视频 | 黄色久 |