Calculer le nombre de coïncidence a regex dans Javascript
Je voulais écrire regex, Calculer le nombre spaces/tabs/newline dans un texte. Par conséquent, j'ai naïvement écrit ce qui suit: -
Pour des raisons inconnues, il retourne toujours
. Quel est le problème avec la déclaration ci-dessus? Depuis lors, j'ai résolu ce problème comme suit: -
numSpaces : function/text/ {
return text.match//\s//.length;
}
Pour des raisons inconnues, il retourne toujours
1
. Quel est le problème avec la déclaration ci-dessus? Depuis lors, j'ai résolu ce problème comme suit: -
numSpaces : function/text/ {
return /text.split//\s//.length -1/;
}
Aucun résultat connexe trouvé
Invité:
Pour répondre aux questions, connectez-vous ou registre
6 réponses
Alice
Confirmation de:
Pour ceux qui sont arrivés ici à la recherche d'un moyen universel de compter le nombre d'entrées de modèle regex Dans la chaîne, et ne veut pas qu'il échoue s'il y a une entrée nulle, ce code est ce dont vous avez besoin. Voici une telle démonstration:
Réponse originale
Le problème avec votre code source est que vous manquez
http://www.javascriptkit.com/jsref/regexp.shtml
:
Sans
les pièces regex Il ne correspondra qu'à la première entrée et s'arrête là-bas.
Notez également que votre regex Envisagerons des espaces successifs deux fois:
S'il est indésirable, vous pouvez le faire:
Emilie
Confirmation de:
, vous pouvez utiliser
https://developer.mozilla.org/ ... /exec
pour le buste de toute coïncidence et comptant chaque entrée; L'avantage n'est limité que par la mémoire, car en général, il s'agit d'environ 20% plus lent que l'utilisation
https://developer.mozilla.org/ ... match
.
Alice
Confirmation de:
Basé sur
, Mais corrigé pour des travaux réels dans le cas de zéro résultats.
Agathe
Confirmation de:
/'my string'.match//\s/g/ || []/.length;
Emilie
Confirmation de:
et mettre en place la fonction PAOLO comme suit:
Je voulais qu'une expression régulière soit transférée à la fonction pour être plus multiple, deuxièmement, je voulais que le paramètre soit une chaîne de sorte que le client n'ait pas fait regex, Et simplement coïncidé avec une chaîne en tant que méthode standard de classe de service string.
Maintenant, vous pouvez voir que je traite de problèmes de participation. Avec l'aide des moyens suivants:
Je garantis que l'entrée n'a rien de commun avec les littéraux.
,
,
ou
, Aucun d'entre eux n'est une chaîne. Étant donné que ces littéraux ne sont pas inclus dans la ligne de saisie, il ne devrait y avoir aucune coïncidence, mais ils doivent coïncider avec
, qui est une chaîne.
Avec l'aide des moyens suivants:
Je traite du fait que le concepteur RegExp sera /Je pense mal/ Interpréter la chaîne
comme All character matcher
Enfin, depuis que j'utilise le designer RegExp, J'ai besoin de lui donner un drapeau global
, Afin qu'il prend en compte toutes les coïncidences, et pas seulement les premières, comme des propositions d'autres postes.
Je comprends que c'est une réponse très tardive, mais elle peut être utile pour quelqu'un qui trébuche ici. BTW Voici la version TypeScript:
Alice
Confirmation de: