recherche

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

javascript - Je n'arrive pas à trouver une expression régulière, aidez-moi s'il vous plaît

Code :

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

Je suis un peu confus, pourquoi match2 est faux, et à quoi correspond match1 ?

天蓬老师天蓬老师2795 Il y a quelques jours429

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

  • 阿神

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

    Frère, il y a quelque chose qui ne va pas avec votre expression régulière. Tout d'abord, il existe deux formes de construction d'expression régulière, l'une est comme la vôtre et l'autre est /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*"
    

    然后就是 *+

    Selon ce que vous voulez dire, votre expression régulière devrait s'écrire comme ceci :

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

    Il manque une barre oblique inverse dans le vôtre, l'échappement a échoué🎜 🎜Pourquoi ? Parce que d'après votre expression régulière, en fait : 🎜 rrreee 🎜Ensuite, il y a la différence entre * et +, donc le premier est vrai et le second est faux. 🎜 🎜Il est recommandé d'utiliser deux barres obliques lors de la construction d'une expression régulière, afin qu'il n'y ait pas besoin d'échappement : 🎜 rrreee

    répondre
    0
  • 黄舟

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

    match1 : s correspond à 0 à 1 espace ou plus. //Il est préférable d'échapper à ceci et d'utiliser // pour que celui qui correspond soit '/'. Cela correspond à '.', s'il n'y a pas de barre oblique inverse. caractère, et le dernier s correspond à 0 à 1 espace ou plus.
    match2 : Seul le dernier est différent, s+, un ou plusieurs espaces, mais votre chaîne n'a évidemment pas d'espace après p, donc c'est faux

    répondre
    0
  • Annulerrépondre