2010-02-21 4 views
1

Je l'ai pour valider une zone de texte.Pourquoi ce regExp ne fonctionne-t-il pas?

Voici l'exp:

var desExp = /^\s*(\w[^\w]*){3}.*$/; 

Cela fonctionne bien en tapant sur une ligne quelque chose comme « voiture vraiment sympa ».

Mais en tapant dans plusieurs lignes comme ceci:

Got receipt. Brand new! // new line here 
Shipping included. // new line here 
0704-256568 

Je pense que l'erreur est parce qu'il ne veut pas « entre dans » ou « nouvelles lignes ». Si oui, cela doit être inclus dans l'expression rationnelle!

Cela donne une erreur car elle ne correspond PAS à l'expression. Quelqu'un pourrait-il me dire pourquoi cela ne correspond pas?

Merci

+0

Montrez comment vous utilisez * it *. 'String # match'? 'RegExp # exec'? –

Répondre

4

font var desExp = /^\s*(\w[^\w]*){3}.*$/gm;

Avis les g et les m options à la fin ce qui rend l'économie mondiale et regex multiligne ..

0

Newline regex isnt pris en charge dans tous les navigateurs.

En fonction de votre cible navigateurs, vous pouvez ajouter le mode multiligne (non pris en charge partout)

/^\s*(\w[^\w]*){3}.*$/m 

L'autre option est de remplacer de nouvelles lignes avec une chaîne unique, exécutez la regex remplacez les cordes uniques soutient

str = str.replace(/\n/g,'xxxStringxxx') 
// Do regex 
str = replace(/xxxStringxxx/g,'\n'); 
+1

Intéressant. Quels navigateurs ne supportent pas le mode multiligne? –

+0

@ Max S: Probablement aucun ne vaut la peine de s'inquiéter. –

Questions connexes