Maison > interface Web > js tutoriel > Analyse de l'utilisation de la correspondance la plus longue de l'expression régulière js (correspondance gourmande) et de la correspondance la plus courte (correspondance paresseuse)

Analyse de l'utilisation de la correspondance la plus longue de l'expression régulière js (correspondance gourmande) et de la correspondance la plus courte (correspondance paresseuse)

高洛峰
Libérer: 2017-01-09 15:57:47
original
1666 Les gens l'ont consulté

Cet article analyse l'utilisation de la correspondance la plus longue (correspondance gourmande) et de la correspondance la plus courte (correspondance paresseuse) des expressions régulières js. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Je lisais récemment le code source de RequireJS 2.1.15. Une série de variables est définie au début du code source, et il y en a 4. expressions régulières :

var commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg,
cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,
jsSuffixRegExp = /\.js$/,
currDirRegExp = /^\.\//;
Copier après la connexion

commentRegExp l'expression régulière est utilisée pour faire correspondre les commentaires dans le code JavaScript. Pour l'utilisation de /m, veuillez vous référer à cet article : Analyse de l'utilisation de la multiligne (/m) dans le modificateur d'expression régulière JS. . Pour l'utilisation de /g, veuillez vous référer à cet article : Expression régulière JS. Analyse de l'utilisation du modificateur global(/g). Je n'ai jamais vu cette utilisation de *? dans commentRegExp auparavant, et je pense que c'est très étrange, car * représente 0 ou plus dans les expressions régulières, et ? représente 0 ou 1. Au début, je pensais que cette façon d'écrire *? était redondant. J'ai demandé à mes collègues de découvrir que *? Cette façon d'écrire est une correspondance paresseuse.

alert(/abc([\w]*)/mg.exec("abc1abc2")[0]);//abc1abc2
alert(/abc([\w]*?)/mg.exec("abc1abc2")[0]);//abc
Copier après la connexion

Cela se voit à travers le code suivant : La différence entre le match le plus long et le match le plus court peut être vu à travers ce code : La différence entre le match le plus long et le match le plus court, un correspond à plusieurs caractères autant que possible, celui qui correspond au moins de caractères possible. Généralement, les moteurs d'expressions régulières utilisent par défaut la correspondance la plus longue. Si nous voulons la correspondance la plus courte, nous pouvons ajouter un ? après le modificateur de quantité pour devenir la correspondance la plus courte.

/***注释1****/ var name = "aty"; /***注释2****/
var name = "aty";
Copier après la connexion

À partir du code ci-dessus, nous pouvons savoir pourquoi requirejs utilise *? Si nous voulons supprimer tous les commentaires, la correspondance la plus courte doit être utilisée, sinon le code var name="aty";


Pour plus d'articles sur l'analyse de l'utilisation des expressions régulières js correspondant à la correspondance la plus longue (correspondance gourmande) et à la correspondance la plus courte (correspondance paresseuse), veuillez faire attention au site Web PHP chinois !


source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal