Expression Réguliere (chaine) Regexp
Bonjour,
je voudrais savoir si il possible de chercher une occurence d'un élément d'une chaine dans une autre chaine, tout ça sans faire de boucles imbriquées, et sans utiliser d'indexOf().
Je souhaiterais utiliser une expression régulière qui à mon gout est bcp plus rapide.
Je vous explique mon problème:
J'ai une chaine 1
Code:
var chaine1 = "202|608|71|682|433|511|19|84|77|46|55" ;
et une autre chaine 2
Code:
var chaine2 = "841|433" ;
Je souhaiterai savoir avec une expression régulière si une occurence de chaine2 (soit 841 soir 433) se trouve dans la chaine 1.
Le seul truc est de savoir si c'est true or false, après ou l'occurence se trouve, ce n'est pas important.
Pouvez vous m'éclaicir, car j'ai un peu de mal avec les Regexp.
Merci d'avance
Re: Expression Réguliere (chaine) Regexp
Citation:
Envoyé par Mike35
Je souhaiterais utiliser une expression régulière qui à mon gout est bcp plus rapide.
Tiens, c'est nouveau ça, la rapidité est une question de goût 8O
Citation:
Envoyé par Mike35
Pouvez vous m'éclaicir, car j'ai un peu de mal avec les Regexp.
T'éclaircir :roll:
Sinon, pour ta question, tu fais simplement:
Code:
1 2 3
|
reg = new RegExp(chaine2);
alert(reg.test(chaine1)); |
Normalement, ça devrait marcher :)
Re: Expression Réguliere (chaine) Regexp
Citation:
Envoyé par Mike35
Je souhaiterai savoir avec une expression régulière si une occurence de chaine2 (soit 841 soir 433) se trouve dans la chaine 1.
Le seul truc est de savoir si c'est true or false, après ou l'occurence se trouve, ce n'est pas important.
Citation:
Envoyé par Mike35
En fait ça ne marche qu'à moitié, disons que si je mets chaine2 = "841|1", àa devrait me renvoyer false, or ça me renvoie true...
Car il trouve bien le 1 dans chaine1.
Ce qui se passe c'est qu'il faudrait délimiter les champs....
Je proteste, c'était absolument pas dans les spécifs!!!!!
Alors sinon, pour la solution, je te conseille:
Code:
1 2 3
|
reg = new RegExp("\|("+chaine2+")\|");
alert(reg.test("|"+chaine1+"|")); |
L'ajout dans chaine 1, c'est juste pour éviter les cas particuliers au bord de la chaine....