国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

javascript - js正規(guī)表示式求兩個字元之間的字串
伊謝爾倫
伊謝爾倫 2017-05-19 10:37:52
0
5
923

這種字串
var d = "1【ddd】sfdsaf【ccc】fdsaf【bbbb】";
我想得到【和】之間的字串陣列
如何用一個正規(guī)搞定?
不包括兩個括號
目前我自己只能做到有括號的

var d = "1【ddd】sfdsaf【ccc】fdsaf【bbbb】"; 
var patt = /\【[^\】]+\】/g; 
d.match(patt)
伊謝爾倫
伊謝爾倫

小伙看你根骨奇佳,潛力無限,來學(xué)PHP伐。

全部回覆(5)
給我你的懷抱

很簡單,用零寬斷言

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

上面只用了零寬度正預(yù)測先行斷言,實際上如果不限於JavaScript的話,還可以寫成

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

零寬斷言分為兩類四種:

正向零寬斷言

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

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

零寬度正回顧後發(fā)斷言(?<=exp)(JavaScript不支援)

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

負向零寬斷言

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

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

零寬度負回顧後發(fā)斷言(?<!exp)(JavaScript不支援)

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

淡淡煙草味

參考 @hack_qtxz 使用replace實作。

var d= "1【ddd】sfdsaf【ccc】fdsaf【bbbb】"; 
var patt = /\【([^\】]+)\】/g; 
var result = d.replace(patt, (
var d= "1【ddd】sfdsaf【ccc】fdsaf【bbbb】"; 
var patt = /\【[^\】]+\】/g; 
var result = d.match(patt).map(v => v.substr(1, v.length-2));
console.log(result);
, )=>',!' + + ',').split(',').filter(v=>-1 != v.indexOf('!')).map(v=>v.substr('1')); console.log(result);

以下使原答案:

和 @舒克 答案有點重複了,在換一個寫法。

var d= "1【ddd】sfdsaf【ccc】fdsaf【bbbb】"; 
var patt = /\【([^\】]+)\】/g; 

var matches;
var result = [];
while ( !!(matches = patt.exec(d)) ) {
    result.push(matches[1]);
}
console.log(result);

以下是原答案:

rrreee
劉奇

引用 @cipchk 給你補全代碼吧。

var d = "1【ddd】sfdsaf【ccc】fdsaf【bbbb】";
var myregexp = /【([^】]+)/g;
var result;
while ((result = myregexp.exec(d)) != null) {
    console.log(result[1])
}
巴扎黑

雷雷

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板