J'utilise ce code en php pour détecter s'il y a cinq mêmes symboles dans une ligne dans la chaîne et exécuter du code si c'est le cas. Maintenant, j'ai besoin de faire la même chose en javascript, mais malheureusement je ne suis pas assez familier avec ça. Comment peut-on convertir cette fonction en javascript? La fonction doit renvoyer false si elle trouve 5 symboles identiques dans la ligne donnée.Regex recherche dans javascript
Répondre
Ici, vous allez
function symbolsInRow(string, limit) {
// set the parameter to 5 if it is not provided
limit = (limit || 5);
// create a regexp object, initialized with the regex you want. we escape the \ with \\ because it is a special char in javascript strings.
var regex = new RegExp('(.)\\1{'+(limit-1)+',}');
// return false if we find a match (true if no match is found)
return !regex.test(string);
}
la méthode test
réelle retourne vrai si elle trouve une correspondance. Donc, notez le !
qui est l'opérateur not
inversant le résultat du test, puisque vous vouliez retourner false s'il trouvait une séquence.
exemple à http://www.jsfiddle.net/gaby/aPTAb/
Peut-être pas avec une expression rationnelle:
function symbolsInRow(str, limit, symbol){
return str.split(symbol).length === limit + 1;
}
je préfère le faire en utilisant regex s'il est possible parce que je dois effectuer la vérification pour chaque symbole individuellement. Aucun des symboles de la chaîne ne doit être utilisé plus de cinq fois de suite, mais il peut être utilisé à n'importe quelle quantité dans différents endroits. Par exemple, ce "somethiiiiiiiiing" devrait retourner false mais "quelquechose de sinistre" ne devrait pas ... –
Le problème original demande un symbole ** quelconque ** (c'est-à-dire que vous ne pouvez pas attendre que l'appelant sache ce que 'symbol' est. ..) être répété cinq fois ** d'affilée ** (donc 'aaa-aa' ne retournerait pas' true'). –
une mauvaise traduction de "dans une ligne" à "sur une ligne" dans mon cerveau parlant français ... – Mic
Cela devrait être équivalent:
function symbolsInRow(string, limit) {
limit = (limit || 5) - 1;
return !(new RegExp('(.)\\1{'+limit+'}')).test(string);
}
Dans les expressions régulières Javascript, le modificateur "u" est inutile et 's' est le défaut (il faut utiliser' m' revenir en mode multiligne). –
@Victor Nicollet: C'est vrai. J'ai déjà réglé ça. – jwueller
Maintenant, vous devez transformer ce '\' en '\\';) –
Pour cinq caractères sensibles à la casse dans une rangée, cela devrait fonctionner:
function symbolsInRow(string) {
return /(.)\1{4}/.test(string);
}
Si vous devez faire correspondre un nombre arbitraire de répétitions:
function symbolsInRow(string,limit) {
return (new RegExp('(.)\\1{'+limit+'}')).test(string);
}
- 1. Regex Recherche dans Emacs
- 2. SynEdit & RegEx recherche
- 3. Recherche multi-mots Regex
- 4. Recherche Hpricot avec Regex
- 5. java regex recherche?
- 6. Email corps regex recherche
- 7. Recherche de doublons (Regex)
- 8. Javascript REGEX
- 9. JavaScript Regex
- 10. Javascript regex dans l'extension firefox
- 11. Recherche et ajouter avec regex dans Notepad ++
- 12. Recherche interactive/remplacement de regex dans Vim?
- 13. Recherche simple/remplacer l'aide regex dans Eclipse
- 14. Suivant Majuscule utilisant Regex Recherche
- 15. Regex Aide à la recherche
- 16. recherche en arrière avec regex
- 17. Aide PHP regex - recherche inversée?
- 18. regex: caractère de recherche toujours pas parfait
- 19. Recherche de contrôles dans javascript
- 20. JavaScript Regex Compile()
- 21. Cross navigateur Javascript regex
- 22. Javascript REGEX: Tags
- 23. Javascript RegEx Question
- 24. Question de regex Javascript
- 25. JavaScript - chaîne regex
- 26. remplacer JavaScript/regex
- 27. JavaScript Regex Browser Inconsistance?
- 28. javascript regex plusieurs requêtes
- 29. Javascript Clean URL Regex
- 30. match Regex avec JavaScript
Pourquoi le modificateur 'g'? –
@Victor, juste au cas où il y aurait des retours à la ligne dans la chaîne .. –
Newlines? 'g' n'a rien à voir avec les nouvelles lignes. – jwueller