JavaScript: indexOf vs Match lors de la Recherche des Chaînes?

La lisibilité de côté, il y a aucune perceptibles écarts (de performance, peut-être) entre l'utilisation de

str.indexOf("src") 

et

str.match(/src/)

Personnellement, je préfère match (et regexp) mais les collègues semblent aller dans l'autre sens. Nous nous demandions si c'était ...?

EDIT:

J'aurais dit au début que c'est pour des fonctions qui feront partielle de la plaine-correspondance de chaîne (pour ramasser les identifiants dans les attributs de classe pour JQuery) plutôt que par des recherches à base de regexp avec des caractères génériques, etc.

class='redBorder DisablesGuiClass-2345-2d73-83hf-8293' 

La différence entre:

string.indexOf('DisablesGuiClass-');

VS

string.match(/DisablesGuiClass-/)
  • Je pense que str.indexOf("xyz") doit être comparé avec /xyz/.test(str)
  • ici un indice de référence, ce qui se compare indexOf, regex et correspondre jsben.ch/#/r9hBp
  • En fait String.prototype.indexOf est plus comparable à String.prototype.search parce que les deux seront de retour l'index de début de la match. L'expression booléenne 'foo'.indexOf('bar') !== -1 est mieux comparable à /bar/.test('foo') parce que tous deux entraînent une valeur booléenne. Cela dit, pour de simples expressions sans les groupes et les ancrages de la performance devraient être comparables. str.match est perdre en faire trop, car il renvoie à tous les matchs et je ne vous le conseille de l'utiliser pour des comparaisons.Cela dit, si vous n'avez pas de problème de performance choisi celui qui est plus lisible.
InformationsquelleAutor indra | 2011-01-21