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

資訊專欄INFORMATION COLUMN

淺嘗正則表達(dá)式

HelKyle / 1221人閱讀

摘要:同樣的你也可以測試第四次執(zhí)行的時候就會是了,需要知道的是,只有在全局檢索時才會生效,否則的話只會返回哦方法二使用正則表達(dá)式模式對字符串執(zhí)行搜索,并將更新全局對象的屬性以反映匹配結(jié)果。

之前寫正則都是各種上網(wǎng)搜索,還是沒有系統(tǒng)的學(xué)習(xí)過正則表達(dá)式的用法,今天稍稍研究了一下下,感覺還是收獲頗豐的,分享給各位,希望對于你們有所幫助~~

修飾符

g --全局匹配

i --不區(qū)分大小寫,默認(rèn)區(qū)分

m --多行搜索

預(yù)定義類字符

d: 數(shù)字;[0-9]

D: 非數(shù)字字符;[^0-9]

s: 空白符;[ x0Bf ]

S: 非空白符;[^ x0Bf ]

w: 單詞字符(字母,數(shù)字,下劃線);[a-zA-Z_0-9]

W: 非單詞字符;[^a-zA-Z_0-9]

字符類

[]: 表示字符類 []中的^表示取反,-表示范圍如:[0-9][a-z];

量詞

?: 出現(xiàn)0次或者1次(最多出現(xiàn)一次);

+: 出現(xiàn)1次或者多次(最少出現(xiàn)1次);

*: 出現(xiàn)0次或者多次(任意次);

{n}: 出現(xiàn)n次;

{n,m}: 出現(xiàn)n到m次

{n,}: 至少出現(xiàn)n次;

常用的邊界字符

^: 以xxxx開始;

$: 以xxxx結(jié)尾;

: 單詞邊界;

B: 非單詞邊界;

貪婪模式

d{3,6}匹配3-6個數(shù)字,那么 "12345678"就會匹配d{6}

非貪婪模式

在量詞后面加上?就會盡可能少的匹配了,上面的例子d{3,6}? 就會匹配d{3}

分組

想要匹配abc重復(fù)三次的場景,abc{3}不就行了?事實(shí)上abc{3}匹配的是c{3},若想匹配abc3次則需要用到分組的概念了;
正則中()表示分組,及(abc){3}為匹配 abc 3次
$n代表匹配的分組
如:2018-03-03匹配換成2018年03月03日?

"2018-03-01".replace(/(d{4})-(d{2})-(d{2})/g,"$1年$2月$3日");

分組中不想被匹配到的分組在分組中加上?:就可以了,如上例:

"2018-03-01".replace(/(d{4})-(?:d{2})-(d{2})/g,"$1年$2月$3日");

這時第二個分組就不會被捕獲,就相當(dāng)于有兩個分組,所以不存在$3這時的輸出結(jié)果就會是 "2018年01月$3日";

aaa | bbb 兩個同時匹配

前瞻,后顧

前瞻就是在正則表達(dá)式匹配到規(guī)則的時候,向前檢查是否符合斷言("前"的概念就是正則表達(dá)式從文本頭部向尾部開始解析)
Javascript 不支持后顧所以這里就不做過多研究了哈。
-符合特定斷言為 肯定/正向 匹配
正向前瞻:exp(?=assert)
例子:

"s3&df34a7".replace(/w(?=d)/g,"OK");

會輸出 "OK3&dOKOK4OK7"即找到匹配的單詞(w)后會再次匹配后面的字符是不是數(shù)字,如果是則當(dāng)前匹配的字符替換為OK,本次替換的單詞(w)是s,f,3,a

-不符合特定斷言為 否定/負(fù)向 匹配
負(fù)向前瞻:exp(?!assert)
栗子:

"s3&df34a7".replace(/w(?=d)/g,"OK");

會輸出 "sOK&OKf3OKaOK"即找到匹配的單詞(w)后會再次匹配后面的字符是不是數(shù)字,如果不是則當(dāng)前匹配的字符替換為OK,本次替換的單詞(w)是3,d,4,7。把7算進(jìn)來我認(rèn)為是匹配到7的時候后面沒有字符了是空也不是數(shù)字所以被替換了,如果不對還請大神指正哈。

對象屬性

global是否全文搜索,默認(rèn)為false,修飾符中的g;

ignoreCase 是否大小寫敏感,默認(rèn)為false,修飾符中的i;

multiline多行搜索,默認(rèn)為false,修飾符中的m;

lastIndex是當(dāng)前表達(dá)式匹配內(nèi)容的最后一個字符的下一個位置(有點(diǎn)繞哈,后面會解釋);

source 正則表達(dá)式的文本字符串;

舉個栗子:

var reg = /w/gim;
reg.global // true
reg.ignoreCase //true
reg.source // "w"
方法 方法一

RegExp.prototype.test(str) 用于測試字符串參數(shù)中是否存在匹配正則表達(dá)式模式的字符串,如果存在則返回true,否則返回false

舉個栗子:

var reg1 = /w/;
reg1.test("a"); // true
reg1.test("#"); // false
reg1.test("a"); // true
reg1.test("#"); // false

再舉個栗子:

var reg2 = /w/g;
reg2.test("a"); // true
reg2.test("#"); // false
reg2.test("a"); // false 
reg2.test("a"); // true
reg2.test("a"); // false 

看到區(qū)別了么?當(dāng)全局檢索時為什么第二次執(zhí)行reg2.test("a");時返回false呢?現(xiàn)在就要說說上文提到的對象屬性lastIndex啦,沒記住的回到上面看看定義,當(dāng)?shù)谝淮螆?zhí)行時我們獲取到的lastIndex是1,那下一次就會從2的位置開始執(zhí)行,而我們可以知道2的位置是沒有字符的,所以返回false,第三次執(zhí)行的時候有返回了true是因?yàn)椴樵兊經(jīng)]有字符了lastIndex又重置了。同樣的你也可以測試reg2.test("aaa")第四次執(zhí)行的時候就會是false了,需要知道的是,只有在全局檢索時(g)lastIndex才會生效,否則的話只會返回 0 哦

方法二

RegExp.prototype.exec(str)使用正則表達(dá)式模式對字符串執(zhí)行搜索,并將更新全局RegExp對象的屬性以反映匹配結(jié)果。如果沒有匹配的文本則返回null,否則返回一個數(shù)組:

index聲明匹配文本的第一個字符的位置;

input存放被檢索字符串的string;

非全局調(diào)用

調(diào)用非全局的RegExp對象的exec()方法時,返回?cái)?shù)組

第一個元素是與正則表達(dá)式相匹配的文本

第二個元素是與RegExp對象的第一個子表達(dá)式(上文中的分組)相匹配的文本(如果有的話)

第二個元素是與RegExp對象的第二個子表達(dá)式(上文中的分組)相匹配的文本(如果有的話),以此類推

舉個栗子:

var reg = /d(w)(w)d/;
var text = "1az2bc3cf4df5gf";
var regexec =  reg.exec(text);
console.log(reg.lastIndex + "	" + regexec.index + "	" + regexec.toString()); //0    0    1az2,a,z

因?yàn)槭欠侨终{(diào)用所以reg.lastIndex返回 0;regexec.index 返回了0,匹配到的文本的第一個字符是"1",index也就是0,regexec返回的數(shù)組第一元素是與reg相匹配的文本,第二個元素是該文本中的符合正則表達(dá)式中第一個分組(w)的文本是"a"后面的z同理。

全局調(diào)用

再來看看全局調(diào)用的例子

var reg = /d(w)(w)d/g;
var text = "1az2bc3cf4df5gf";
while(regexec = reg.exec(text)){
    console.log(reg.lastIndex + "	" + regexec.index + "	" + regexec.toString()); 
}
// 4    0    1az2,a,z
// 10    6    3cf4,c,f

全局調(diào)用 lastIndex 生效 分別讀取到1az23cf4的下一個字符的位置,后面與非全局調(diào)用同理,不過全局調(diào)用返回的是整段字符串符合規(guī)則的文本。

嗯哼,這篇文章就到這里了,如果對你有所幫助點(diǎn)個贊啦貓大在此謝過啦
本文會在個人博客更新的哦,博主可好了,有空溜達(dá)溜達(dá)~~~

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

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

相關(guān)文章

  • graphql-js 淺嘗

    摘要:系列文章核心概念淺嘗本文常言道,實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)。遵循傳統(tǒng),第一個例子必須是。官方提供這個中間件來支持基于的查詢,所以,這里選用作為服務(wù)器。首先是,這里對做了一點(diǎn)小修改,給幾個字段添加了不能為空的設(shè)計(jì)。 系列文章: GraphQL 核心概念 graphql-js 淺嘗(本文) 常言道,實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)。 上一篇文章講了 GraphQL 的核心概念,所提到的一些例...

    gyl_coder 評論0 收藏0
  • 淺嘗webpack

    摘要:用于對模塊的源代碼進(jìn)行轉(zhuǎn)換。將基礎(chǔ)模塊打包進(jìn)動態(tài)鏈接庫,當(dāng)依賴的模塊存在于動態(tài)鏈接庫中時,無需再次打包,而是直接從動態(tài)鏈接庫中獲取。負(fù)責(zé)打包出動態(tài)鏈接庫,負(fù)責(zé)從主要配置文件中引入插件打包好的動態(tài)鏈接庫文件。告一段落,淺嘗輒止。 吐槽一下 webpack 自出現(xiàn)時,一直備受青睞。作為強(qiáng)大的打包工具,它只是出現(xiàn)在項(xiàng)目初始或優(yōu)化的階段。如果沒有參與項(xiàng)目的構(gòu)建,接觸的機(jī)會幾乎為零。即使是參與了...

    villainhr 評論0 收藏0
  • 淺嘗一個排程引擎Optaplanner - 前序

    摘要:近些年一直在制造業(yè),做過,當(dāng)過小組負(fù)責(zé)人。要滿足智能制造中,實(shí)現(xiàn)對機(jī)臺進(jìn)行分鐘級甚至秒級的生產(chǎn)指令下達(dá)。這個核心是怎么實(shí)現(xiàn)的呢那就需要一個很牛的引擎。事實(shí)上業(yè)務(wù)規(guī)則分兩種,很多個層次。這個時候排程引擎就派上用場了。   當(dāng)碼農(nóng)有10多年了,由建筑行業(yè)軟件,各種MIS,通用物流定制平臺,CCTV客戶端(是閉路電視,不是央視喔)啥都做過。最后小試一下創(chuàng)業(yè),不過那都是鬧著玩的,不到一年就回到...

    OBKoro1 評論0 收藏0

發(fā)表評論

0條評論

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