recherche

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

javascript - (?=exp) assertion d'anticipation de prédiction positive de largeur nulle, comment l'utiliser et pourquoi cela ne fonctionne pas

'<img abc 123 width="168" height="300"'.match(/(?=(width="))168/)

Je m'attends à extraire 123 situé dans width="123" d'une chaîne

Laissez-moi vous dire ce à quoi je peux penser en premier. Mais cette opération semble bizarre. Existe-t-il un moyen sympa

Utilisez le remplacement et récupérez-le dans le rappel ;

'<img abc 123 width="168" height="300"'.replace(/width="\d+"/,function(a){console.log(a)})

Ou comme @ars_qu

'<img abc 123 width="168" height="300"'.match(/width="\d+"/)[0].match(/\d+/)[0]
阿神阿神2832 Il y a quelques jours737

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

  • 高洛峰

    高洛峰2017-05-19 10:29:51

    js prend mal en charge les assertions, utilisez simplement les groupes correspondants directement :

    '<img abc 123 width="168" height="300"'.match(/width="(\d+)"/)[1]

    répondre
    0
  • 習慣沉默

    習慣沉默2017-05-19 10:29:51

    JS ne prend pas en charge la prélecture inversée

    Il prend actuellement en charge la recherche directe pour les assertions de largeur nulle, c'est-à-dire la recherche de texte qui se termine par un mot spécifié (ou une autre condition). --JS est actuellement pris en charge ;

    L'exigence dans votre question est de trouver le texte précédé du mot spécifié (ou d'autres conditions). --JS n'est actuellement pas pris en charge.

    P.S. : Même si je le soutiens, votre écriture est fausse ! Si vous souhaitez trouver le nombre après la largeur, vous devez utiliser la recherche inversée. La bonne façon de l'écrire (en C# ou PHP) est
    /(?<=width)d+/. . Notez le signe supplémentaire inférieur à. /(?<=width)d+/。 注意多了一个小于号。
    如果你想找width前面的数字,比如字符串是这样的"168width",这是用到的是正向预查,写法为 /d+(?=width)/Si vous souhaitez trouver le nombre devant la largeur, par exemple, la chaîne ressemble à "168width", cela utilise

    forward lookup

    , qui s'écrit /d+(?=width)/ .

    Pratique standard - Capture de groupes

    🎜L'utilisation de la capture régulière est la meilleure méthode dans votre scénario. 🎜
    '<img abc 123 width="168" height="300"'.match(/width="(\d+)/)[1];  //输出168

    répondre
    0
  • 大家讲道理

    大家讲道理2017-05-19 10:29:51

    用捕获,取RegExp.
    var str = '<img abc 123 width="168" height="300"/>';
    var reg = /.*(width\=\"(.*)\")\s.*/
    reg.test(str)
    console.log(reg.test(str), RegExp., RegExp.) 

    répondre
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-19 10:29:51

    Tu ne peux pas simplement utiliser width=".*?", puis faire correspondre les nombres ?

    répondre
    0
  • 高洛峰

    高洛峰2017-05-19 10:29:51

    js ne semble pas prendre en charge certaines expressions régulières, telles que l'assertion de largeur nulle....

    répondre
    0
  • Annulerrépondre