2011-06-30 5 views
-2

Je substrings ai une chaîne de quelque chose comme çaexpression régulière pour correspondre délimité

var test = 'Hello you have multiple L2:Me here;L3:Me not here; and some other text...'; 

Je veux obtenir tableau de chaînes

L2:Me here  
L3:Me not here 

Le format est L (un nombre): texte;

Qu'est-ce que regex?

+5

Qu'avez-vous essayé? Si vous ne connaissez pas d'expressions régulières, voici une bonne source pour l'apprendre: http://www.regular-expressions.info/ –

+0

Veuillez passer en revue les bases de RegEx. – bhagyas

Répondre

1

Si ces points-virgules vont toujours être là, vous pouvez utiliser quelque chose comme ceci:

var re = /L[0-9]+:[^;]+/g; 
var test = 'Hello you have multiple L2:Me here;L3:Me not here; and some other text...'; 
var match = test.match(re); 
console.log(match); 
// match = ["L2:Me here", "L3:Me not here"] 

Explication:

  • L[0-9]+: matchs L suivie d'une séquence de nombres, suivi par deux points (c.-à-"L105:")
  • [^;]+ correspond à tout caractère n'est pas un point-virgule (la partie [^;]) au moins une fois (le + partie), et arrête seulement une fois qu'il atteint un point-virgule
  • Le g drapeau rend les matches global, qui est de trouver non seulement le premier match et l'arrêt
1

Je n'ai pas testé, mais il devrait fonctionner

/(L\d:[a-zA-Z0-9\s]+;)/ 
+0

Cela fonctionne. Vous pouvez également utiliser \ w à la place de a-zA-Z0-9. – Corv1nus

0

L'expression rationnelle est

/L\d+:[^;]*/g 

Signification, commencer par une L, suivie d'une séquence d'un ou plusieurs chiffres s (\d+), un : et une séquence de zéro ou plusieurs caractères ne comprenant pas ; ([^;]*). Le g à la fin est pour "global", et fait l'expression rationnelle s'applique à plus d'une occurence.

Utilisation avec correspondance:

var parts = test.match(/L\d+:[^;]*/g); 
Questions connexes