cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Saya tidak dapat mengetahui ungkapan biasa, tolong bantu saya

Kod:

var match1 = new RegExp('\S*//weibo\.com/p/\S*');
var match2 = new RegExp('\S*//weibo\.com/p/\S+');

match1.test('http://weibo.com/p/12345/myfollow?relate=fans#place');//true
match2.test('http://weibo.com/p/12345/myfollow?relate=fans#place');//false

Saya agak keliru, kenapa match2 itu palsu, dan apa yang match1 match?

天蓬老师天蓬老师2776 hari yang lalu418

membalas semua(2)saya akan balas

  • 阿神

    阿神2017-05-19 10:33:59

    Saudara, ada sesuatu yang tidak kena dengan ekspresi biasa anda Pertama sekali, terdapat dua bentuk pembinaan ekspresi biasa, satu seperti milik anda, dan satu lagi ialah /abc/g. /abc/g

    看你的意思,你的正则表达式应该这样写:

    var match1 = new RegExp('\S*//weibo\.com/p/\S*');
    var match2 = new RegExp('\S*//weibo\.com/p/\S+');
    

    你的少了反斜杠,转义失败

    为什么?因为按照你的正则表达式,实际上:

    var match1 = new RegExp('\S*//weibo\.com/p/\S*');
    match1.source;
    // "S*\/\/weibo.com\/p\/S*"
    

    然后就是 *+

    Bergantung pada maksud anda, ungkapan biasa anda hendaklah ditulis seperti ini:

    var match1 = /\S*\/\/weibo\.com\/p\/\S/;
    match1.source;
    // "\S*\/\/weibo\.com\/p\/\S"

    Milik anda tiada garis miring ke belakang, gagal melarikan diri🎜 🎜Kenapa? Kerana menurut ungkapan biasa anda, sebenarnya: 🎜 rrreee 🎜Kemudian terdapat perbezaan antara * dan +, jadi yang pertama adalah benar dan yang kedua adalah palsu. 🎜 🎜Adalah disyorkan untuk menggunakan dua garis miring semasa membina ungkapan biasa, supaya tidak perlu melarikan diri: 🎜 rrreee

    balas
    0
  • 黄舟

    黄舟2017-05-19 10:33:59

    match1: s sepadan dengan 0 hingga 1 atau lebih ruang //Sebaik-baiknya untuk melarikan diri ini dan gunakan // supaya yang dipadankan ialah '/' Ini sepadan dengan '.', jika tiada garis serong ke belakang watak, dan s terakhir sepadan dengan 0 hingga 1 atau lebih ruang.
    match2: Hanya yang terakhir berbeza, s+, satu atau lebih ruang, tetapi rentetan anda jelas tidak mempunyai ruang selepas p, jadi ia adalah palsu

    balas
    0
  • Batalbalas