Question

Depuis que j'ai commencé à écrire cette question, je pense avoir trouvé les réponses à chaque question que j'avais, mais je pensais poster de toute façon, car cela pourrait être utile à d'autres et des précisions plus utiles.

J'essayais d'utiliser une expression régulière avec lookahead avec la fonction javascript divisée. Pour une raison quelconque, il ne scindait pas la chaîne même s'il trouve une correspondance lorsque j'appelle correspondance Je pensais au départ que le problème venait de l’utilisation du look looking dans mon expression habituelle. Voici un exemple simplifié:

Ne fonctionne pas:

"aaaaBaaaa".split("(?=B).");

Fonctionne:

"aaaaBaaaa".match("(?=B).");

Il semble que le problème soit que, dans l'exemple de division, la chaîne transmise ne soit pas interprétée comme une expression régulière. L'utilisation de barres obliques au lieu de guillemets semble résoudre le problème.

"aaaaBaaaa".split(/(?=B)./);

J'ai confirmé ma théorie avec l'exemple stupide suivant:

"aaaaaaaa(?=B).aaaaaaa".split("(?=B).");

Quelqu'un d'autre pense-t-il qu'il est étrange que la fonction de correspondance suppose que vous avez une expression régulière, contrairement à la fonction de division?

Était-ce utile?

La solution

String.split accepte une chaîne ou une expression régulière en tant que premier paramètre. La méthode String.match accepte uniquement une expression régulière.

J'imagine que String.match va essayer de travailler avec tout ce qui est passé; donc, si vous passez une chaîne, il sera interprété comme une expression régulière. La méthode String.split n'a pas le luxe de le faire, car elle peut accepter des expressions régulières ET des chaînes; dans ce cas, il serait stupide de deviner.

Modifier : (à partir de: "JavaScript: le guide définitif")

String.match nécessite l'utilisation d'une expression régulière. L'argument passé doit être un objet RegExp qui spécifie le modèle à rechercher. Si cet argument n'est pas un RegExp , il est d'abord converti en un en le passant à RegExp () constructeur.

Autres conseils

Si je me souviens bien (et je pourrais très bien me tromper ici), la méthode de scission a été implémentée en javascript avant que le moteur de regex ne soit largement utilisé. Il s'agit donc sans doute d'une compatibilité ascendante.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top