国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

正則表達(dá)式入門

ThinkSNS / 1825人閱讀

摘要:一幾個(gè)概念正則表達(dá)式正則表達(dá)式是描述一組字符串特征的模式,用來匹配特定的字符串。捕獲分組非捕獲分組正則表達(dá)式中通常用括號(hào)分組內(nèi)容來表示一個(gè)捕獲分組,以便后續(xù)對(duì)其引用,它通常和后向引用相聯(lián)系。

寫在前面

正則真是個(gè)偉大的發(fā)明啊。分分鐘提高工作效率,
以前刪除某個(gè)文件夾下面的文件(Mac):

command + A  && command + delete

現(xiàn)在只需在命令行下

rm -rf *

而且如果你要?jiǎng)h除的文件有規(guī)律的話,

// 刪除開頭為"2017-11-"的所有文件
rm -rf 2017-11-*
// 刪除.txt文件 
rm -rf *.txt

簡(jiǎn)直是進(jìn)入現(xiàn)代化啊。總而言之,學(xué)好正則非常必要啊。
本文的代碼使用JavaScript書寫。javascript 對(duì)正則的實(shí)現(xiàn)基于RegExp對(duì)象。其說明文檔在(MDN-RegExp介紹),可以了解下。

一、幾個(gè)概念

正則表達(dá)式

正則表達(dá)式是描述一組字符串特征的模式,用來匹配特定的字符串。——Ken Thompson

字符串字面值 原生的字符串,沒有添加正則元素在里面,看到什么就是什么。比如Hello world 這個(gè)就是一個(gè)字面值。

元字符 在正則表達(dá)式中有特殊含義的字符,是正則表達(dá)式保留字。比如*+?[]

字符組 用于匹配字符的集合,通常置于[]內(nèi),如[0-9][a-z]

字符組簡(jiǎn)寫式
如其名字所說,是字符組的簡(jiǎn)寫形式。如d匹配數(shù)字,相當(dāng)于[0-9],使用簡(jiǎn)寫式可以使表達(dá)式更精煉。

捕獲分組vs非捕獲分組 正則表達(dá)式中通常用括號(hào)(分組內(nèi)容)來表示一個(gè)捕獲分組,以便后續(xù)對(duì)其引用,它通常和 后向引用 相聯(lián)系。與之相對(duì)的是非捕獲分組(?:分組內(nèi)容) 。因?yàn)榉遣东@分組不會(huì)存儲(chǔ)到內(nèi)存中,通常性能會(huì)好于捕獲分組。如:(abc)#1可以匹配abc#abc,這里1引用了前面的(abc),非捕獲分組表示abc 則可以寫成(?:abc)

量詞 量詞用于描述某個(gè)模式出現(xiàn)的個(gè)數(shù)。

* 用于表示0個(gè)或多個(gè)
?表示0個(gè)或1個(gè)
+ 表示1個(gè)或多個(gè)
{n} 表示出現(xiàn)n個(gè)

邊界 用來標(biāo)記字符串中的位置,如^
$ 分別用于匹配行的起始和結(jié)束位置。用于標(biāo)記單詞的邊界.

二、簡(jiǎn)單的模式匹配
2.1 匹配字符串字面量
var hw = /hello world/;
hw.test("hello world");// true
2.2 匹配數(shù)字和非數(shù)字

對(duì)于單個(gè)數(shù)字,我們可以用[0-9],也可以用d,當(dāng)然也可以用[0123456789],根據(jù)具體需要我們也可以選擇部分?jǐn)?shù)字進(jìn)行匹配[12],這只會(huì)匹配1和2。

// 匹配0-9的數(shù)字
var reg1 = /[0-9]/;
// 簡(jiǎn)寫形式
var reg2 = /d/;

reg1.test("5");
reg2.test("5");

舉個(gè)例子,我們可以用數(shù)字匹配來驗(yàn)證年份。

// 匹配1000 ~ 2999
var yearReg = /^[1-2]ffffd$/;
yearReg.test("1970");
yearReg.test("2999");

d相反的是D用于匹配非數(shù)字字符,它相當(dāng)于[^d]

2.3 匹配單詞和非單詞字符

w 用于匹配單詞字符,何謂單詞字符,其實(shí)就相當(dāng)于[_a-zA-Z0-9],既數(shù)字、字母、和下劃線。
同樣它的相反是W,大寫的W

2.4 匹配空白符

s用于匹配空白符,它相當(dāng)于[ ],既空格、制表符( )、換行符( )、回車符( )。
這個(gè)應(yīng)用就挺大了,比如利用replace()可以把文本中的空白符去掉。

var sReg = /s/;
var text = "wor ld";
// 刪除空白字符
text.replace(sReg, "");//world
2.5 匹配任意字符

.用于匹配任意字符。結(jié)合量詞我們可以用來匹配字符長(zhǎng)度。

var reg = /^.{4}$/;
reg.test("-R3s");
reg.test("hello");
三、選擇、分組和引用
3.1 選擇

選擇操作可以在多個(gè)子模式中選擇一種,(html|HTML)可以匹配html也可以匹配HTML,

var reg = /<(html|HTML)>/;
reg.test("");//true
reg.test("");//true
3.2 捕獲分組和后向引用

前面提到過,()表示一個(gè)捕獲分組,括號(hào)代表一個(gè)分組的開始,從左到右分別1、2、3……,引用的時(shí)候就可以用12來引用了。

// 這里1表示前面的(html|HTML)
var reg = /<(html|HTML)>.*/;
reg.test("");//true
reg.test("");//true
3.3 非捕獲分組

有時(shí)候我們的分組并不需要后面引用,這時(shí)候可以使用非捕獲分組來提升性能。

// 判斷廣東省廣州市的電話號(hào)碼
var reg = /^(?:020)-d{8}$/;
reg.test("020-88886666");//true

// 判斷151或127開頭的手機(jī)號(hào)
var reg2 = /^(?:151|127)d{8}$/;
reg2.test("15166668888");//true
四、匹配Unicode字符

uXXXX 或者xxx用于匹配Unicode 字符,
"京"的Unicode編碼為u4eac
那么我們可以嘗試匹配一下北京的車牌號(hào):

var reg = /^u4eac[A-Z][0-9_A-Z]{5}$/;
reg.test("京AF2345");//true
五、結(jié)語

正則表達(dá)式是相當(dāng)強(qiáng)大的工具,這篇文章只能算是自己入門的一個(gè)簡(jiǎn)單的總結(jié)。還有許多特性等待在實(shí)踐中發(fā)掘。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/89728.html

相關(guān)文章

  • ES6入門正則的擴(kuò)展

    摘要:正則的擴(kuò)展參數(shù)為字符串,那么第二個(gè)參數(shù)表示正則表達(dá)式的修飾符,如下等價(jià)于參數(shù)為一個(gè)正則表達(dá)式,這時(shí)返回一個(gè)原有正則表達(dá)式的拷貝。如下調(diào)用調(diào)用調(diào)用調(diào)用修飾符對(duì)正則表達(dá)式添加了修飾符,用來正確處理大于的字符。 showImg(https://segmentfault.com/img/bVbrJqm?w=800&h=1200); 1. 正則的擴(kuò)展 參數(shù)為字符串, 那么第二個(gè)參數(shù)表示正則表達(dá)式...

    jifei 評(píng)論0 收藏0
  • 正則達(dá)式入門實(shí)踐(一)

    摘要:一前言正則表達(dá)式入門實(shí)踐系列文章適合熟悉至少使用過正則表達(dá)式的同學(xué),在文章開始的時(shí)候我們都會(huì)帶著問題去思考如何正確應(yīng)用正則表達(dá)式解決出現(xiàn)的問題,在解決問題的過程中增長(zhǎng)你的知識(shí),提高你的實(shí)踐能力。 一 前言 正則表達(dá)式入門實(shí)踐系列文章適合熟悉至少使用過正則表達(dá)式的同學(xué),在文章開始的時(shí)候我們都會(huì)帶著問題去思考如何正確應(yīng)用正則表達(dá)式解決出現(xiàn)的問題,在解決問題的過程中增長(zhǎng)你的知識(shí),提高你的實(shí)踐...

    chanthuang 評(píng)論0 收藏0
  • 爬蟲入門到精通-網(wǎng)頁的解析(正則

    摘要:本文章屬于爬蟲入門到精通系統(tǒng)教程第五講在爬蟲入門到精通第四講中,我們了解了如何下載網(wǎng)頁,這一節(jié)就是如何從下載的網(wǎng)頁中獲取我們想要的內(nèi)容萬能匹配文章的標(biāo)題文字我們要獲取的如上所示,假如我們要獲取文章的標(biāo)題這幾個(gè)文字,那么我們應(yīng)該怎么做呢我 本文章屬于爬蟲入門到精通系統(tǒng)教程第五講 在爬蟲入門到精通第四講中,我們了解了如何下載網(wǎng)頁,這一節(jié)就是如何從下載的網(wǎng)頁中獲取我們想要的內(nèi)容 萬能匹配 h...

    RiverLi 評(píng)論0 收藏0
  • 前端計(jì)劃——JavaScript正則達(dá)式快速入門

    摘要:前言正則表達(dá)式時(shí)處理字符串中常用的手法,本文以簡(jiǎn)單的方式,快速展示了中正則相關(guān)的基礎(chǔ)知識(shí)點(diǎn)。文末還提供了幾個(gè)簡(jiǎn)單的正則相關(guān)面試題。接下來是正則部分,注意后面的并不匹配,也就是比如,實(shí)際匹配的值是和,在和后面加上,就完成了預(yù)期。 前言:正則表達(dá)式時(shí)處理字符串中常用的手法,本文以簡(jiǎn)單的方式,快速展示了JavaScript中正則相關(guān)的基礎(chǔ)知識(shí)點(diǎn)。文末還提供了幾個(gè)簡(jiǎn)單的正則相關(guān)面試題。個(gè)人總結(jié)...

    Xufc 評(píng)論0 收藏0
  • 正則達(dá)式快速入門

    摘要:如這個(gè)表達(dá)式能匹配兩種以連字號(hào)分隔的電話號(hào)碼一種是三位區(qū)號(hào),位本地號(hào)如,一種是位區(qū)號(hào),位本地號(hào)。有時(shí)我們要匹配的字符串可能包含正則表達(dá)式語法提供的一些元字符,這時(shí)我們就要用到字符轉(zhuǎn)義例如匹配,匹配。 找了很多正則表達(dá)式的教程,始終沒有滿意的,要不就是直接給出一張?jiān)址谋恚痪褪墙o出各種常用的表達(dá)式,直到我看到這篇http://deerchao.net/tutorials/regex...

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

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

0條評(píng)論

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