Qu'est-ce que je fais mal ici?erreur quantificateur invalide javascript sur regex
J'essaie de remplacer un nombre dans une chaîne par un autre nombre en utilisant javascript. J'ai une longue chaîne qui a le numéro 1 plusieurs fois. Je dois remplacer le numéro 1 par 2 dans tous les cas, sauf si 1 a un autre numéro de chaque côté. J'ai fait un tas de recherches google pour savoir comment utiliser regex (je suis totalement nouveau sur regex) et j'ai trouvé ça.
string.replace(/(?<!\d)1(?!\d)/,2);
Fondamentalement, je veux l'expression rationnelle match (et donc remplacer) toutes les occurrences du numéro 1 où il est entouré de tout sauf un autre numéro. Je ne veux pas que la correspondance inclue les caractères environnants - seul le chiffre 1.
Je continue d'obtenir l'erreur de quantificateur non valide dans ma console firebug. Qu'est-ce que je fais mal?
Le colon est-il l'opérateur correct pour le lookbehind négatif? Je lisais [link] http://www.regular-expressions.info/lookaround.html sur comment faire des lookbehinds négatifs et il dit d'utiliser le caractère lt. Je l'ai remplacé par le deux-points comme vous l'avez dit et je ne reçois plus l'erreur, mais il ne renvoie pas de correspondance non plus? J'ai essayé d'ajouter g après la barre oblique finale pour correspondre à chaque occurrence et cela ne fonctionne toujours pas. Je suis désemparé ici. – codescribblr
@Jonathan: Non, JavaScript n'a pas de look-behind (seulement anticipé, à la fois positif et négatif). Le '?:' Indique simplement un bloc non-capturant. –
Bonne explication! Merci beaucoup. Voici ce que je me suis retrouvé sur la base de ce que vous m'avez donné: 'var i = 1; \t $ ("# addshipmentobjecbutton") { \t \t cliquez sur (function() if (i <= 5) { \t \t \t var old_object = $ ('# shipmentobject') html();.. \t \t \t var new_object = ancien_objet.replace (/ (^ | \ D) \ d (?! \ d)/g, "$" + i + 2); \t \t \t $ ('# shipmentobjects').ajouter ("
"); \t \t \t i ++; \t \t} \t}); ' – codescribblr