Latest web development tutorials

Espressioni regolari - regole di corrispondenza

corrispondenza di base modello

Tutti Iniziamo con le basi. Pattern è un'espressione regolare è gli elementi più elementari, che sono caratterizzati da una stringa di descrizione del gruppo di caratteri. Modalità può essere molto semplice, costituito da stringhe normali, possono anche essere molto complessa, spesso rappresentare un intervallo di caratteri con caratteri speciali, ripetuti, o rappresenta contesto. Ad esempio:

^once

Questo modello contiene un carattere speciale ^, indicando che il modello corrisponde solo una volta quelli che iniziano con lo spago. Ad esempio, la stringa modello "c'era una volta" partita non corrisponde a "C'era una volta un uomo di NewYork". Come tale ^ simbolo indica l'inizio della stessa, simboli $ per abbinare quelle stringhe al termine di una data modalità.

bucket$

Il modello e "che hanno mantenuto tutto questo denaro in un secchio" match non corrisponde con i "secchi". ^ E $ caratteri quando viene utilizzato contemporaneamente, rappresenta una corrispondenza esatta (modalità stringa come). Ad esempio:

^bucket$

Corrisponde solo la stringa "secchio". Se un modello non include i ^ e $, contiene la stringa per adattarsi a qualsiasi del modello. Ad esempio: Modo

once

con lo spago

There once was a man from NewYork
Who kept all of his cash in a bucket.

Match.

Le lettere (una volta) in questa modalità è un carattere letterale, cioè, hanno detto che la lettera stessa, la cifra è la stessa. Alcuni altri personaggi un po 'più complesse come la punteggiatura e caratteri (spazi, tabulazioni, ecc), utilizzare la sequenza di escape. Tutte le sequenze di escape a partire da una barra rovesciata (\). Tabs sequenza di escape è: \ t. Quindi, se vogliamo verificare se una stringa che inizia con una scheda, è possibile utilizzare questa modalità:

^\t 

Allo stesso modo, rappresentata da \ n "nuova linea", \ r ritorno a capo. Altri simboli speciali possono essere usati davanti una barra rovesciata, come la stessa barra rovesciata con \\ detto periodo. Con \. Rappresentazione, e così via.

grappolo carattere

Programma in INTERNET, l'espressione regolare viene spesso utilizzato per convalidare l'input dell'utente. Quando un utente invia un modulo poi, immettere il numero di telefono che si desidera giudicare, indirizzo, indirizzo email, numero di carta di credito è valida, con il carattere generale sulla base del letterale non è sufficiente.

Quindi, utilizzare un modello più liberi di descrivere il nostro approccio è ammassi caratteri. Per creare una rappresentazione di carattere di tutta gruppo vocale, mettere tutto il carattere vocale in parentesi quadre:

[AaEeIiOoUu]

Questo modello corrisponde alcun carattere vocale, ma rappresentano solo un personaggio. Con un trattino può rappresentare un intervallo di caratteri, quali:

[a-z] //匹配所有的小写字母 
[A-Z] //匹配所有的大写字母 
[a-zA-Z] //匹配所有的字母 
[0-9] //匹配所有的数字 
[0-9\.\-] //匹配所有的数字,句号和减号 
[ \f\r\t\n] //匹配所有的白字符

Analogamente, questi rappresentano solo un carattere, questo è molto importante. Se si desidera far corrispondere una lettera minuscola e una per una stringa di numeri, come ad esempio "Z2", "T6" o "g7", ma non "AB2", "r2d3" o "B52", quindi utilizzare questo modello:

^[a-z][0-9]$

Anche se il [az] a nome dei 26 lettere della gamma, ma qui è solo il primo carattere è minuscolo string matching.

Come accennato in precedenza ^ rappresenta l'inizio della stringa, ma ha anche un altro significato. Quando utilizzato in una serie di parentesi quadre ^ è che significa "non" o mezzi "di esclusione", spesso utilizzati per eliminare un carattere. Anche utilizzare l'esempio precedente, chiediamo primo carattere non può essere un numero:

^[^0-9][0-9]$

Questa modalità "& 5", "g7" e "-2" è abbinato, ma con il "12", "66" non è una partita. Ecco alcuni esempi di escludere i caratteri specifici:

[^a-z] //除了小写字母以外的所有字符 
[^\\\/\^] //除了(\)(/)(^)之外的所有字符 
[^\"\'] //除了双引号(")和单引号(')之外的所有字符

carattere speciale "." (Dot, punto) nelle espressioni regolari usato per rappresentare l'aggiunta alla "nuova linea" di tutti i personaggi. Quindi il modello "^ .5 $" e gli eventuali due caratteri alla fine del numero 5 e la stringa partita in un altro carattere non "nuova linea" ad inizio. Mode "." Può corrispondere a qualsiasi stringa, oltre alla stringa vuota, e include solo una "stringa nuova linea".

PHP espressione regolare è un po 'built-in cluster di carattere universale, l'elenco è il seguente:

字符簇 描述
[[:alpha:]] 任何字母
[[:digit:]] 任何数字
[[:alnum:]] 任何字母和数字
[[:space:]] 任何空白字符
[[:upper:]] 任何大写字母
[[:lower:]] 任何小写字母
[[:punct:]] 任何标点符号
[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]

OK ripetuto

Fino ad ora, sai già come abbinare una lettera o un numero, ma più casi, si consiglia di abbinare una parola o un insieme di numeri. Una parola ha un certo numero di lettere, un gruppo di diverse figure in numero dispari. Con il carattere oi caratteri dietro il gruppo di parentesi graffe ({}) utilizzate per determinare il numero di ripetizioni del contenuto precedente.

字符簇 描述
^[a-zA-Z_]$ 所有的字母和下划线
^[[:alpha:]]{3}$ 所有的3个字母的单词
^a$ 字母a
^a{4}$ aaaa
^a{2,4}$ aa,aaa或aaaa
^a{1,3}$ a,aa或aaa
^a{2,}$ 包含多于两个a的字符串
^a{2,} 如:aardvark和aaab,但apple不行
a{2,} 如:baad和aaa,但Nantucket不行
\t{2} 两个制表符
.{2} 所有的两个字符

Questi esempi descrivono l'uso di tre diverse coppie. Un numero, {x} significa "il carattere oi caratteri davanti al gruppo appare solo x volte"; un numero virgola, {x,} significa "il contenuto appare davanti al numero di volte x o più", due con separati da virgola numeri, {x, y} che "il contenuto di fronte almeno sembrano x volte, ma non più di y volte." Siamo in grado di estendere il modello a più parole o numeri:

^[a-zA-Z0-9_]{1,}$ //所有包含一个以上的字母、数字或下划线的字符串 
^[1-9][0-9]*$ //所有的正数 
^\-{0,1}[0-9]{1,}$ //所有的整数 
^[-]?[0-9]+\.?[0-9]+$ //所有的浮点数

L'ultimo esempio non è ben compreso, non è vero? Così Kanba: (? [-]) (. \) E tutti con un segno meno facoltativo All'inizio (^), seguito da una o più cifre ([0-9] +), e un punto decimale colloquio su una o più cifre ([0-9] +), e non è seguito da altro ($). Qui di seguito si saprà di più semplice metodo può essere utilizzato.

"?" E caratteri speciali {0,1} sono uguali, essi rappresentano: "0 o 1 davanti a 'o' di fronte il contenuto è opzionale." Così solo esempi possono essere semplificate come:

^\-?[0-9]{1,}\.?[0-9]{1,}$

carattere speciale "*" e {0,} sono uguali, tutti rappresentano la "0 o più del contenuto precedente." Infine, i caratteri "+" e {1} sono uguali, indica "1 o più del contenuto precedente", quindi i suddetti quattro esempi possono essere scritte come:

^[a-zA-Z0-9_]+$ //所有包含一个以上的字母、数字或下划线的字符串 
^[0-9]+$ //所有的正数 
^\-?[0-9]+$ //所有的整数 
^\-?[0-9]*\.?[0-9]*$ //所有的浮点数

Naturalmente, questo non significa fondamentalmente ridurre la complessità tecnica delle espressioni regolari, ma può renderli più facili da leggere.