第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

js正則表達(dá)式求兩個(gè)字符之間的字符串

js正則表達(dá)式求兩個(gè)字符之間的字符串

白豬掌柜的 2018-11-14 13:14:21
這種字符串var d = "1【ddd】sfdsaf【ccc】fdsaf【bbbb】"; 我想得到【和】之間的字符串?dāng)?shù)組如何用一個(gè)正則搞定?不包括兩個(gè)括號目前我自己只能做到帶括號的var d = "1【ddd】sfdsaf【ccc】fdsaf【bbbb】"; var patt = /\【[^\】]+\】/g; d.match(patt)
查看完整描述

1 回答

?
FFIVE

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

非常簡單,用零寬斷言

const d = "1【ddd】sfdsaf【ccc】fdsaf【bbbb】";
d.match(/[^【]+(?=】)/g);

上面只用了零寬度正預(yù)測先行斷言,實(shí)際上如果 不限于JavaScript的話 是新版 Chrome、新版 Node.JS 的話,還可以寫成

(?<=【).+?(?=】)

零寬斷言分為兩類四種:

正向零寬斷言

零寬度正預(yù)測先行斷言(?=exp)

表示自身位置之后可以匹配到exp的表達(dá)式,而不匹配exp。
比如\d+(?=999)表示以999結(jié)尾的數(shù)字串(但是匹配結(jié)果不包含999)

零寬度正回顧后發(fā)斷言(?<=exp)(JavaScript不支持 新版 Chrome、新版 Node.JS 支持,F(xiàn)irefox 至今不支持,其他未測試)

表示自身位置之前可以匹配到exp的表達(dá)式,而不匹配exp。
比如(?<=999)\d+表示以999開頭的數(shù)字串(但是匹配結(jié)果不包含999)

負(fù)向零寬斷言

零寬度負(fù)預(yù)測先行斷言(?!exp)

表示自身位置之后不能是exp的表達(dá)式。
比如\d+(?!999)表示匹配不是以999結(jié)尾的數(shù)字串

零寬度負(fù)回顧后發(fā)斷言(?<!exp)(JavaScript不支持 新版 Chrome、新版 Node.JS 支持,F(xiàn)irefox 至今不支持,其他未測試)

表示自身位置之前不能是exp的表達(dá)式。
比如(?<!999)\d+表示匹配不是以999開頭的數(shù)字串

舉個(gè)例子

const str = '~~~%ABC%~~~DEF~~~%GHI~~~JKL%~~~';

console.log('左右都有 % 的三個(gè)連續(xù)字母(ABC):', str.match(/(?<=%)\w{3}(?=%)/g));

console.log('左右都沒有 % 的三個(gè)連續(xù)字母(DEF):', str.match(/(?<!%)\w{3}(?!%)/g));

console.log('僅左邊有 % 的三個(gè)連續(xù)字母(GHI):', str.match(/(?<=%)\w{3}(?!%)/g));

console.log('僅右邊有 % 的三個(gè)連續(xù)字母(JKL):', str.match(/(?<!%)\w{3}(?=%)/g));

在新版 Chrome 下可以得到結(jié)果:

左右都有 % 的三個(gè)連續(xù)字母(ABC): ["ABC"]

左右都沒有 % 的三個(gè)連續(xù)字母(DEF): ["DEF"]

僅左邊有 % 的三個(gè)連續(xù)字母(GHI): ["GHI"]

僅右邊有 % 的三個(gè)連續(xù)字母(JKL): ["JKL"]

在 Firefox 或是舊版 Chrome 下無法執(zhí)行。

查看完整回答
反對 回復(fù) 2018-12-08
  • 1 回答
  • 0 關(guān)注
  • 1699 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號