recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - expression régulière js pour trouver la chaîne entre deux caractères

Ce type de chaîne
var d = "1【ddd】sfdsaf【ccc】fdsaf【bbbb】";
Je souhaite obtenir le tableau de chaînes entre [et]
Comment utiliser une expression régulière ?
Ne comprend pas deux parenthèses
Actuellement, je ne peux le faire qu'avec des parenthèses

var d = "1【ddd】sfdsaf【ccc】fdsaf【bbbb】"; 
var patt = /\【[^\】]+\】/g; 
d.match(patt)
伊谢尔伦伊谢尔伦2745 Il y a quelques jours774

répondre à tous(5)je répondrai

  • 大家讲道理

    大家讲道理2017-05-19 10:39:52

    var d = "1【ddd】sfdsaf【ccc】fdsaf【bbbb】"; 
    var patt = /\【([^\】]+)\】/g; 
    var arr = [];
    d.replace(patt,function(rrreee,){arr.push()});

    répondre
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-19 10:39:52

    Très simple, utilisez assertion de largeur nulle :

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

    Seule assertion d'anticipation positive de largeur nulle est utilisée ci-dessus. En fait, si elle ne se limite pas à JavaScript, elle peut également s'écrire sous la forme

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

    Les assertions de largeur nulle sont divisées en deux catégories et quatre types :

    Affirmation de largeur nulle en avant

    Assertion d'anticipation positive de largeur nulle (?=exp)

    (?=exp)

    表示自身位置之后可以匹配到exp的表达式,而不匹配exp。
    比如d+(?=999)表示以999结尾的数字串(但是匹配结果不包含999)

    零宽度正回顾后发断言(?<=exp)(JavaScript不支持)

    表示自身位置之前可以匹配到exp的表达式,而不匹配exp。
    比如(?<=999)d+表示以999开头的数字串(但是匹配结果不包含999)

    负向零宽断言

    零宽度负预测先行断言(?!exp)

    表示自身位置之后不能是exp的表达式。
    比如d+(?!999)表示匹配不是以999结尾的数字串

    零宽度负回顾后发断言(?<!exp)(JavaScript不支持)

    表示自身位置之前不能是exp的表达式。
    比如(?<!999)d+Indique que l'expression après sa propre position peut correspondre à exp, mais ne correspond pas à exp.
    Par exemple, d+(?=999) représente une chaîne numérique se terminant par 999 (mais le résultat correspondant n'inclut pas 999)

    🎜Assertion positive de largeur nulle (?<=exp) (non pris en charge par JavaScript) 🎜Indique que l'expression qui peut correspondre à exp avant sa propre position ne correspond pas à exp.
    Par exemple, (?<=999)d+ représente une chaîne numérique commençant par 999 (mais le résultat correspondant n'inclut pas 999)🎜 🎜Assertion négative de largeur nulle🎜 🎜Assertion d'anticipation négative de largeur nulle (?!exp) 🎜L'expression qui indique sa propre position ne peut pas être suivie d'exp.
    Par exemple, d+(?!999) signifie faire correspondre une chaîne de nombres qui ne se termine pas par 999🎜 🎜Assertion d'analyse négative de largeur nulle (?<!exp) (non pris en charge par JavaScript) 🎜L'expression qui indique sa propre position ne peut pas être précédée de exp.
    Par exemple, (?<!999)d+ signifie faire correspondre une chaîne de nombres qui ne commence pas par 999🎜

    répondre
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-19 10:39:52

    Référez-vous à l'implémentation de @hack_qtxz en utilisant 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);

    Voici la réponse originale :

    Et la réponse de @Shuke est un peu répétitive, donc je l'écris d'une manière différente.

    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);

    Voici la réponse originale :

    rrreee

    répondre
    0
  • 怪我咯

    怪我咯2017-05-19 10:39:52

    Citez @cipchk pour compléter le code pour vous.

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

    répondre
    0
  • 巴扎黑

    巴扎黑2017-05-19 10:39:52

    var myregexp = /【([^】]+)/g;
    var match = myregexp.exec(subject);
    while (match != null) {
        // matched text: match[0]
        // match start: match.index
        // capturing group n: match[n]
        match = myregexp.exec(subject);
    }

    répondre
    0
  • Annulerrépondre