cari

Rumah  >  Soal Jawab  >  teks badan

javascript - (?=exp) ramalan ramalan positif lebar sifar, cara menggunakannya dan sebab ia tidak berfungsi

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

Saya menjangkakan untuk mengekstrak 123 yang terletak di width="123" daripada rentetan

Biar saya beritahu anda apa yang saya boleh fikirkan dahulu. Tetapi operasi ini terasa pelik. Adakah terdapat cara yang menarik

Gunakan ganti dan dapatkannya dalam panggilan balik

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

Atau suka @ars_qu

'<img abc 123 width="168" height="300"'.match(/width="\d+"/)[0].match(/\d+/)[0]
阿神阿神2794 hari yang lalu718

membalas semua(5)saya akan balas

  • 高洛峰

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

    js mempunyai sokongan yang lemah untuk penegasan, hanya gunakan kumpulan yang sepadan secara langsung:

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

    balas
    0
  • 習慣沉默

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

    JS tidak menyokong reverse prefetch

    Ia kini menyokong carian hadapan untuk penegasan lebar sifar, iaitu, mencari teks yang berakhir dengan perkataan yang ditentukan (atau syarat lain). --JS kini menyokong;

    Keperluan dalam soalan anda adalah untuk mencari teks yang didahului oleh perkataan yang ditentukan (atau syarat lain). --JS pada masa ini tidak disokong.

    P.S.: Walaupun ia disokong, tulisan anda salah! Jika anda ingin mencari nombor selepas lebar, anda perlu menggunakan Reverse pre-lookup Cara yang betul untuk menulisnya (dalam C# atau PHP) ialah
    /(? <= lebar)d+/. Perhatikan tanda tambahan kurang daripada. /(?<=width)d+/。 注意多了一个小于号。
    如果你想找width前面的数字,比如字符串是这样的"168width",这是用到的是正向预查,写法为 /d+(?=width)/ Jika anda ingin mencari nombor di hadapan lebar, contohnya, rentetannya adalah seperti "168width", ini ialah

    forward lookup

    , ditulis sebagai /d+( ?= lebar)/.

    Amalan Standard - Kumpulan Tangkap

    #🎜🎜#Menggunakan tangkapan biasa adalah kaedah terbaik dalam senario anda. #🎜🎜#
    '<img abc 123 width="168" height="300"'.match(/width="(\d+)/)[1];  //输出168

    balas
    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.) 

    balas
    0
  • 我想大声告诉你

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

    Bolehkah anda hanya menggunakan lebar=".*?" dan kemudian padankan nombor?

    balas
    0
  • 高洛峰

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

    js nampaknya tidak menyokong beberapa ungkapan biasa, seperti penegasan lebar sifar....

    balas
    0
  • Batalbalas