Cet article parle de la définition des expressions régulières javascript (grammaire). Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :
Il existe deux façons de définir des expressions régulières : l'une consiste à appeler RegExp() directement et la seconde consiste à la définir directement avec des littéraux, c'est-à-dire var re = /regular Rule/;
Les deux méthodes de définition appellent essentiellement la méthode RegExp()
Lors de l'appel du même code normal, le comportement dans ECMAScript3 et ECMAScript5 est complètement différent
function reg(){ var re = /\sjavascript/; return re; }
Appelez la méthode reg() plusieurs fois dans ECMAScript3 et ECMAScript5 respectivement
Dans ECMAScript3, le même objet RegExp est appelé, mais dans ECMAScript5, un objet RegExp différent est appelé car à chaque fois qu'il est exécuté dans EXCMAScript5, un nouvel objet RegExp est généré
Il y aura donc des dangers cachés dans le programme en ECMAScript3, car tant que l'objet est modifié à un endroit, tous les endroits appelant cet objet changeront.
1. Caractère direct
correspond généralement aux caractères directement dans les expressions régulières, telles que
/javascript/
Correspondra directement au caractère javascript
prend également en charge la correspondance de caractères autres que des lettres, tels que :
o Caractère NUL (u0000)
t Caractère de tabulation (u0009)
n Caractère de saut de ligne (u000A)
v Onglet vertical (u000B)
f Caractère de saut de page (u000C)
r Caractère de retour chariot (u000D)
xnn Caractère latin spécifié par le nombre hexadécimal nn, par exemple, x0A équivaut à
uxxxx Caractère Unicode spécifié par le nombre hexadécimal xxxx, par exemple u0009 est équivalent à
cX Caractère de contrôle ^X, par exemple, cJ est équivalent au caractère de nouvelle ligne n
Dans les expressions régulières, certains signes de ponctuation ayant une signification particulière doivent être échappés avec ''
^$.* ?=!:|/()[]{}
2. Classe de personnage
[...] Tout caractère entre crochets
[^...] Tout caractère non compris entre crochets
. N'importe quel personnage
w Tout mot composé de caractères ASCII, équivalent à [a-zA-Z0-9]
W Tout mot non composé de caractères ASCII, équivalent à [^a-zA-Z0-9]
N'importe quel espace Unicode
S Tout caractère d'espacement non Unicode, notez que w et S sont différents
d Toute valeur ASCII, équivalente à [0-9]
D Tout caractère sauf les nombres ASCII, équivalent à [^0-9]
[b] Littéral de retour arrière (cas particulier)
3. Répéter (nombre de fois)
? 0 ou 1 fois
1 fois ou plus
* N'importe quel nombre de fois
{n} n fois
{m,n} Minimum m fois, maximum n fois
{n,} n fois ou plus
La valeur par défaut pour les expressions régulières est la correspondance gourmande
Comme [a b ] Si vous voulez faire correspondre aaabb, cela ne correspondra pas à ab, aab, etc., cela ne correspondra qu'à aaabb
[a ?b ?] Cela correspondra à aaab Pourquoi y a-t-il cette différence ?
Réponse : ? Faisons une correspondance régulière non gourmande, alors b ne correspondra qu'à un b ici, alors pourquoi a correspond-il à 3 ? En effet, la correspondance de modèles d'expressions régulières recherche toujours la première position de correspondance possible dans la chaîne.
4. Options | Regroupement | Citations
| est utilisé pour séparer les caractères facultatifs, tels que [ab|cd], qui peuvent correspondre à ab ou cd Remarque : : L'ordre de tentative de correspondance des éléments sélectionnés est gauche → droite, donc. [a|ab], quand a correspond, ab ne correspondra pas, même si ab est une meilleure correspondance
() 1. Les éléments individuels sont traités comme des sous-expressions /java(script)?/ Peut correspondre à javascript et java Autrement dit, la partie parenthèses forme une sous-expression et vous pouvez effectuer | * et d'autres opérations sur la sous-expression
2. Définir des sous-motifs dans le motif complet. Ce dernier peut faire référence à l'expression entre parenthèses /(['"])[a-z]1/ 1 fait référence à l'expression entre les premières parenthèses, donc Cité [. '"]
3. Faites référence à la sous-expression précédente à la fin Remarque : /['"][a-z]['"]/ Cette expression régulière signifie un guillemet simple ou un guillemet double plus une lettre minuscule plus le simple précédent guillemet ou guillemet double, et les guillemets simples et doubles précédents et suivants ne correspondent pas. Si vous souhaitez faire correspondre, vous pouvez écrire comme ceci [(['"])[a-z]1]
.Ajouter des chiffres Vous pouvez citer l'expression entre parenthèses précédentes
5. Précisez la position correspondante (point d'ancrage)
^ Correspond au début d'une chaîne. Lors d'une récupération multiligne, correspond au début d'une ligne
.$ Correspond à la fin d'une chaîne. En récupération multi-lignes, correspond à la fin d'une ligne
b Correspond à la limite d'un mot, bref, c'est la position entre les caractères w et W, ou la position entre le caractère w et le début ou la fin de la chaîne
B Correspond à la position d'une limite autre qu'un mot
(?=p) L'assertion prospective de largeur nulle nécessite que les caractères suivants correspondent à p, mais ne peut pas inclure les caractères qui correspondent à p
(?!p) L'assertion d'anticipation négative de largeur nulle nécessite que le caractère suivant ne corresponde pas à p
6. Modificateurs
est écrit à droite du littéral de l'expression régulière //
i effectue une correspondance insensible à la casseg effectue une correspondance globale, en bref, il trouve toutes les correspondances au lieu de s'arrêter après avoir trouvé la première
m Modèle de correspondance multi-lignes, ^ correspond au début d'une ligne et au début d'une chaîne, $ correspond à la fin d'une ligne et à la fin d'une chaîne /java$/m peut correspondre à javanfunc
Remarque : Lorsque l'expression régulière est globale, le lastIndex actuellement défini sera défini à la position actuelle à chaque fois que exec() et test() sont exécutés à partir de la position de lastIndex, donc. il est préférable de définir lastIndex sur 0 à chaque exécution.
J'espère que cet article sera utile à tout le monde dans la programmation JavaScript.