成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

正則表達(dá)式入門

ThinkSNS / 1866人閱讀

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

寫在前面

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

command + A  && command + delete

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

rm -rf *

而且如果你要刪除的文件有規(guī)律的話,

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

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

一、幾個概念

正則表達(dá)式

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.3 匹配單詞和非單詞字符

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

2.4 匹配空白符

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

    BearyChat 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<