définitions
JavaScript expression régulière, il y a deux sortes de façons définies, semblables à la définition d'un correspondant <% XXX%> string
1. Constructor
var reg = new RegExp ( '<% [^%>] +%>', 'g');
2. littérale
var reg = / <% [^%>]%> / g;
- G: , Ltd Rejoignez libre, recherche en texte intégral, les résultats de recherche par défaut connectée à la première étape
- i: Ingore cas, ignorant la casse, le cas par défaut sensible
- m: plusieurs lignes, recherche multi-ligne (changement ^ et qui signifie $ qu'ils sont le traitement de première ligne et se terminant en une ligne, et non pas seulement au début et à la fin du match la chaîne entière)
métacaractères
Les expressions régulières personnes à une raison importante est que le caractère d'échappement trop prohibitif, la combinaison beaucoup, mais métacaractères d'expression régulière (caractères spéciaux ont une signification particulière dans l'expression régulière peut être utilisé pour spécifier son chef caractère) n'est pas beaucoup
caractères Yuan :( [{\ ^ $ |) * + ?.
Non chaque personnage a sa propre signification particulière de yuans, a différentes significations dans différentes combinaisons caractère Ghost, regardez le classement
Caractères spéciaux prédéfinis
caractère | sens |
\ t | Tabulation horizontale |
\ r | retour chariot |
\ n | Newline |
\F | Les sauts de page |
\ c X | X et le caractère de contrôle correspondant (Ctrl + X) |
\ v | Tabulation verticale |
\ 0 | caractère nul |
Classes de caractères
En général, un caractère d'expression régulière (un nombre de caractères d'échappement) correspondant à une chaîne de caractères, le sens de l'expression ab \ t est
Mais on peut utiliser des caractères meta [] pour construire une classe simple appelée moyen de classe, conformément à certaines caractéristiques de l'objet, est une référence générale plutôt que spécifique à un caractère, et nous pouvons utiliser l'expression [abc] pour caractère a ou b ou c classés en tant que classe, cette expression peut correspondre à un caractère
caractères Yuan combinaison [] peut créer une classe , on peut aussi utiliser le métacaractère ^ créer une classe inverse / catégorie négative, le genre inverse du sens ne appartiennent à la classe de contenu XXX, l'expression [^ abc] représentent un caractère ou non b, c ou contenu
gamme de classe
Suivez les instructions ci-dessus si nous voulons correspondre à un seul chiffre alors l'expression comme celui-ci
[0123456789]
Si la lettre est ainsi. . . Bonne difficulté, les expressions régulières fournit également une gamme de classes, nous pouvons utiliser pour connecter deux caractères xy représente un caractère de x à y, qui est un intervalle fermé, qui contient x et ybenshen, de sorte qu'il est adapté en minuscule simple
[Az]
Si vous voulez faire correspondre toutes les lettres il? Dans [] est ligatures classes internes, nous pouvons écrire [a-zA-Z]
Classes pré-définies
Il suffit d'utiliser régulièrement nous avons créé plusieurs classes, pour représenter des nombres, des lettres, etc., mais il est très gênant d'écrire, l'expression régulière fournit plusieurs classes prédéfinies commun pour nous de faire correspondre les caractères communs
caractère | classes d'équivalence | sens |
. | [^ \ N \ r] | Tous les caractères sauf retour chariot et les sauts de ligne |
\ré | [0-9] | caractères numériques |
\RÉ | [^ 0-9] | Les caractères non numériques |
\ s | [\ T \ n \ X0B \ f \ r] | Whitespace |
\ S | [^ \ T \ n \ X0B \ f \ r] | Les caractères non-blancs |
\ w | [A-Za-z_0-9] | caractères Word (lettres, chiffres, underscores) |
\ W | [^ A-Za-z_0-9] | Le caractère non-mot |
Avec ces classes prédéfinies, écrire une très pratique régulière, par exemple, nous voulons correspondre à une chaîne ab + numérique + un caractère, vous pouvez écrire un ab \ d.
limite
Les expressions régulières fournit plusieurs caractères correspondant frontière commune
caractère |
sens |
^ |
A partir de xx |
$ |
Mettre fin à xx |
\ b |
limite de mot, les caractères se rapportent à [a-zA Z_0-9-] à l'extérieur |
\ B |
frontière non mot |
Regardez les boîtes aux lettres irresponsables correspondance régulière (ne pas imiter, entre parenthèses seront mentionnées plus loin) \ w + @ \ w + \. (Com) $
quantificateur
Avant de présenter la méthode est un à un adapté, si nous voulons correspondre à une chaîne de 20 Do numérique consécutive, nous devons être écrit
\ D \ d \ d \ d ...
À cette fin, l'expression régulière a introduit quelques quantificateurs
caractère | sens |
? | Apparaître zéro (au plus une fois) ou une fois |
+ | Produire une ou plusieurs fois (au moins une fois) |
* | Apparaître zéro fois ou plus (plusieurs fois) |
{N} | Apparaît n fois |
{N, m} | Pour apparaître m fois n |
{N,} | Apparaît au moins n fois |
Regardez quelques exemples d'utilisation quantificateurs
\ w + \ b Byron mots correspondants + + limite Byron
(/ \ w + \ b Byron /) test ( 'Salut Byron . '); // true (/ \ w + \ b Byron /) test ( 'Bienvenue Byron'). // true (/ \ w + \ b Byron /) test ( 'HiByron . '); //faux
\ D + \. \ D {1,3} trois décimales correspondant numérique
le mode cupide et non gourmand
Lisez ci-dessus quantificateurs décrit, l'amour peut-être penser les étudiants penseront à quelques questions sur le principe de correspondance, tels que {3,5} quantificateurs, s'il y a eu dix fois dans un type de phrase, de sorte que chaque match, il est trois ou cinq de toute façon 3,4,5 conditions Satisfy 3-5, quantificateurs sont autant de matches par défaut, qui est, nous le disons souvent gourmand
« 123456789'.match (/ \ d {3,5} / g); // [ "12345", "6789"]
Comme il y a gourmand, alors il y aura certainement mode non gourmand, donc aussi peu que possible de faire correspondre l'expression régulière, ce qui signifie qu'une fois une rencontre idéale ne continue pas d'essayer et de l'approche est très simple, après la quantificateurs, plus? Pour
« 123456789'.match (/ \ d {3,5} / g?); // [ "123", "456", "789"]
paquet
Parfois, nous voulons utiliser quantificateurs lors de l'appariement de multiples personnages, plutôt que l'exemple ci-dessus correspond un tel espoir 20 chaîne correspondant Byron semble, si l'on écrit Byron {20}, puis le match est Byro + n apparaît 20 fois, comment Byron mit dans son ensemble? Utilisation () peut atteindre l'objectif de temps, nous avons appelé les paquets
(Byron) {20}
Si vous voulez correspondre Byron Casper apparaissent 20 fois ou comment le faire? Vous pouvez utiliser des caractères | Rencontrons ou de l'efficacité
(Byron | Casper) {20}
Nous voyons la figure il y a des choses # 1, quel est-il? Utilisez le regroupement correspondance d'une expression régulière seront placés dans un paquet, la valeur par défaut consiste à appuyer sur la distribution numérotée, obtenu différents contenus d'une capture de paquets en fonction du nombre, cette fonction est un peu d'espoir dans les premiers matches de l'opération spécifique est utile
(Byron). (Ok)
S'il y a le cas du paquet imbriqué, en dehors du numéro de groupe avant
((^ |%>) [^ \ T] *)
Parfois, nous ne voulons pas capturer des paquets, il suffit d'ajouter dans le groupe sur ce :?, ne signifie pas que le contenu du paquet ne pas appartenir à l'expression régulière, mais ne sera pas ajouter à ce groupe numéroté seulement
(: Byron) (ok de).
En fait, C # et d'autres langues peuvent également être regroupés à partir du nom, mais ne supporte pas JavaScript
avant-première
expression | sens |
exp1 (? = exp2) | Suivie d'une exp2 correspondant exp1 |
exp1 (?! exp2) | Exp2 correspond pas à l'arrière de exp1 |
Certains disent que l'abstrait, regardez un bon exemple (? = Byron)
(/good(?=Byron)/).exec('goodByron123' ); // [ 'bon'] (/good(?=Byron)/).exec('goodCasper123' ); // null (/bad(?=Byron)/).exec('goodCasper123');//null
Exp1 peut être vu par l'exemple ci-dessus (? = Exp2) expression correspondra expression exp1, mais seulement derrière son contenu est temps exp2 correspondra, à savoir deux conditions, exp1 (?! Exp2) comparer des choses comparables
bon (?! Byron)
(/good(?!Byron)/).exec('goodByron123' ); // null (/good(?!Byron)/).exec('goodCasper123' ); // [ 'bonne'] (/bad(?!Byron)/).exec('goodCasper123');//null