Latest web development tutorials

Expresiones regulares - reglas de concordancia

concordancia con el modelo básico

Todo empezar con lo básico. El patrón es una expresión regular los elementos más básicos, que se caracterizan por una descripción del grupo cadena de caracteres. Modo puede ser muy simple, que consiste en cadenas normales, también puede ser muy complejo, a menudo representan una serie de caracteres con caracteres especiales, repetidas, o representa el contexto. Por ejemplo:

^once

Este modelo contiene un carácter especial ^, lo que indica que el patrón coincide con una sola vez que aquellos que inician con una cuerda. Por ejemplo, la cadena de patrón "érase una vez" partido no coincide con "Había una vez un hombre de NewYork". Como tal ^ símbolo indica el comienzo de la misma, $ símbolos para coincidir con los hilos al final de un modo dado.

bucket$

El modelo y "¿Quién mantiene todo este dinero en efectivo en un cubo" partido no está de acuerdo con los "cubos". Y ^ $ caracteres cuando se utilizan simultáneamente, representa una coincidencia exacta (modo de cadena como). Por ejemplo:

^bucket$

Coincide sólo la cadena "cubo". Si un modelo no incluye los $ ^ y, que contiene la cadena para que coincida con cualquiera de los patrones. Por ejemplo: Modo

once

con una cuerda

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

Match.

Letras (una vez) en este modo es un carácter literal, es decir, que dijeron que la carta en sí, la figura es la misma. Algunos otros personajes un poco más complejas, como puntuacion y caracteres blancos (espacios, tabulaciones, etc.), utilizan la secuencia de escape. Todas las secuencias de escape que comienza con una barra invertida (\). Secuencia de escape más aquí es: \ t. Así que si queremos comprobar si una cadena que comienza con una ficha, se puede utilizar este modo:

^\t 

Del mismo modo, representado por \ n "nueva línea", \ r retorno de carro. Otros símbolos especiales se pueden utilizar en frente de una barra invertida, como la propia barra inversa con \\ dicho período. Con \. Representación, y así sucesivamente.

grupo de caracteres

Programa En Internet, la expresión regular se utiliza a menudo para validar la entrada del usuario. Cuando un usuario envía un formulario a continuación, introduzca el número de teléfono que desea juzgar, dirección, correo electrónico, número de tarjeta de crédito es válida, con el carácter general basadas en el literal no es suficiente.

Así, usar un modelo más libre para describir nuestro enfoque, son los grupos de caracteres. Para crear una representación de caracteres de todos agrupación vocal, poner todo el carácter de vocal en unos corchetes:

[AaEeIiOoUu]

Este patrón coincide con cualquier carácter de vocales, pero sólo representan un carácter. Con un guión puede representar un rango de caracteres, tales como:

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

Del mismo modo, estos sólo representan un personaje, esta es una muy importante. Si desea hacer coincidir una letra minúscula y una por una cadena de números, tales como "Z2", "t6" o "G7", pero no "Ab2", "r2d3" o "B52", a continuación, utilizar este patrón:

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

Aunque el [az] en nombre de las 26 cartas de la gama, pero aquí es sólo el primer carácter es minúscula correspondiente cadena.

Como se ha mencionado anteriormente ^ representa el principio de la cadena, pero también tiene otro significado. Cuando se usa en un conjunto de corchetes ^ es que significa "no" o "medios de exclusión", a menudo usados ​​para eliminar un carácter. También utilice el ejemplo anterior, nos preguntamos primer carácter no puede ser un número:

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

Este modo "y 5", "G7" y "-2" es igualada, pero con el "12", "66" no es una coincidencia. Aquí hay algunos ejemplos de excluir caracteres específicos:

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

carácter especial "." (punto, punto) en la expresión regular se utiliza para representar la adición a la "nueva línea" de todos los personajes. Por lo que el patrón de "^ $ 0,5" y cualquiera de los dos personajes al final del número 5 y la cadena de búsqueda en otra sin carácter "nueva línea" al principio del. Modo "." ¿Puede coincidir con cualquier cadena, además de la cadena vacía, e incluye sólo una "cadena nueva línea".

PHP expresión regular ha incorporado algunos de clúster carácter universal, la lista es la siguiente:

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

Aceptar repetida

Hasta ahora, usted ya sabe cómo hacer coincidir una letra o un número, pero más casos, es posible que desee para que coincida con una palabra o un conjunto de números. Una palabra tiene una serie de cartas, un grupo de varias cifras en número impar. Con el carácter o caracteres detrás del grupo de llaves ({}) que se utiliza para determinar el número de repeticiones del contenido anterior.

字符簇 描述
^[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} 所有的两个字符

Estos ejemplos describen el uso de tres llaves diferentes. Un número, {x} significa "el carácter o caracteres de delante de la agrupación sólo aparece x veces"; una coma número, {x,} significa "el contenido aparece delante del número de veces x o más"; dos con números separados por comas, {x, y} que "el contenido frente a al menos aparece x veces, pero no más que los tiempos y." Podemos extender el modelo a más palabras o números:

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

El último ejemplo no se entiende bien, ¿no es así? Así Kanba: (? [-]) (. \) Y todas con un signo menos opcional al principio (^), seguido de uno o más dígitos ([0-9] +), y un punto decimal Talk en uno o más dígitos ([0-9] +), y no está seguido por cualquier otra cosa ($). A continuación usted sabrá método más simple puede ser utilizado.

"?" Y caracteres especiales {0,1} son iguales, que representan: "0 o 1 frente a" o "delante del contenido es opcional." Así que sólo ejemplos se pueden simplificar como:

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

carácter especial "*" y {0,} son iguales, todos ellos representan el "0 o más del contenido anterior." Por último, los caracteres "+" y {1} son iguales, indica "1 o más del contenido anterior", por lo que los cuatro ejemplos anteriores se pueden escribir como:

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

Por supuesto, esto no reduce fundamentalmente la complejidad técnica de las expresiones regulares, pero puede que sean más fáciles de leer.