Maison > Questions et réponses > le corps du texte
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 ?
阿神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*"
然后就是 *
和 +
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黄舟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