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?
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
。看你的意思,你的正则表达式应该这样写:
你的少了反斜杠,转义失败
为什么?因为按照你的正则表达式,实际上:
然后就是
Bergantung pada maksud anda, ungkapan biasa anda hendaklah ditulis seperti ini:*
和+
*
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: 🎜 rrreeematch1: 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