Frère, j'ai récemment appris JavaScript. Quand j'ai appris l'expression régulière, j'ai trouvé que les points de connaissances étaient un peu déroutants, alors j'ai écrit un blog pour le résumer.
Définition
Il existe deux façons de définir reg exp en JavaScript :
1) Utilisez new exp : var exp1 = new exp("abc");
2) Placez le motif directement entre les deux /s : var exp2 = /abc/; . Il n'y a pas de guillemets doubles. Si vous les ajoutez, cela devient une chaîne
Caractères spéciaux
L'inspection visuelle montre que les caractères spéciaux sont les mêmes que ceux de Perl. . Utilisez-le simplement directement
d Caractères numériques
w Caractères alphanumériques (« caractères de mots »)
s Caractères d'espacement (espace, tabulation, nouvelle ligne et similaires)
D Caractères qui ne sont pas des chiffres
W Caractères non alphanumériques
S Caractères non-espaces
Un point correspond à tous les caractères sauf les nouvelles lignes
Il existe un moyen très simple de s'en souvenir :
d = chiffre C'est donc chiffres
w = mot Donc c'est des lettres
s = espace Donc c'est des espaces
Toutes les lettres majuscules sont inversées. .
Parenthèses []
Mettre le motif entre parenthèses signifie qu'il est vrai tant qu'il correspond à n'importe quel caractère. (Identique à Java ou Perl)
Par exemple,
console.log(/[01]/.test("023424")); // vrai
console.log(/[01]/.test("13424" )) ; // vrai
console.log(/[01]/.test("23424")); // faux
supports ()
signifie que tout doit correspondre à tout ce qui est entre parenthèses pour être vrai
Par exemple,
console.log(/[01]/.test("013424")); // true
console.log(/[01]/. test("13424")); // faux
console.log(/[01]/.test("230424")); // faux
console.log(/[ 01]/.test("230142401 ")); // true
Les quantificateurs
sont les mêmes que Java. . Cette montre est très bonne. . Frère, j'aime toujours utiliser
Greedy |
Reluctant |
Possessive |
Meaning |
X? |
X?? |
X? |
X, once or not at all |
X* |
X*? |
X* |
X, zero or more times |
X |
X ? |
X |
X, one or more times |
X{n} |
X{n}? |
X{n} |
X, exactly n times |
X{n,} |
X{n,}? |
X{n,} |
X, at least n times |
X{n,m} |
X{n,m}? |
X{n,m} |
X, at least n but not more thanm times |
Fonctions d'objet d'expression
1) test C'est très simple, il suffit de mettre la chaîne à tester dans test(...), cette fonction retournera vrai/faux Représente la correspondance /unmatch
2) exec, cette fonction renvoie null si la chaîne correspondante n'est pas trouvée. Si elle est trouvée, elle renverra un tableau contenant les chaînes correspondantes dans l'ordre
3 ) Chaîne. .replace(expression1, string1) Cette fonction remplace la partie correspondante dans l'expression par string1, le groupe entre parenthèses
dans l'expression précédente peut être utilisé pour en remplacer une certaine partie. Par exemple, "co-ol".replace(/[w] -[w] /,"$2-$1"); //"ol-co" peut être utilisé jusqu'à 9 $
4)String. replace (expression, fonction) Il s'agit d'une version améliorée, et elle est très puissante. Vous pouvez définir n'importe quelle sortie via la fonction. L'utilisation spécifique n'est pas répertoriée ici, veuillez vous référer à
Cliquez pour ouvrir le lien
Génération dynamique d'expression reg
Lorsque les éléments que vous souhaitez utiliser dans reg exp ne sont connus que par runtime , cette méthode peut être appliquée
pour générer reg exp. En fait, il vous suffit d'utiliser une chaîne pour créer l'apparence de reg exp, puis d'utiliser le constructeur de Exp. (Mentionné en début d'article)
Par exemple :
var name = "cher"
"oh, mon cher".replace(new Exp(name), "dieu"); // oh, mon dieu
Mais s'il y a des caractères spéciaux dans le nom qui peuvent être utilisés dans les expressions régulières, la méthode ci-dessus tournera souvent mal.
Donc, dans ce cas, nous pouvons ajouter une barre oblique inverse devant chaque caractère de la chaîne d'entrée, par exemple :
var name = df[]vxv;
var expName = name.replace("/[^/w/s]/g"," \$&");
"je m'appelle df[]vxv".replace(new Exp(name), "Bob"); // je m'appelle Bob