749 Shares 7884 views

PHP (expresiones regulares) – ¿qué es? Ejemplos y comprobación de las expresiones regulares

Cuando se trabaja con texto en cualquier lenguaje de programación moderno, los desarrolladores se reúnen constantemente con los objetivos de la validación de entrada para el cumplimiento de la pauta deseada, buscar y reemplazar fragmentos de prueba y otros tipos de operaciones de procesamiento de información de caracteres. Desarrollar sus propios algoritmos de validación conduce a la pérdida de tiempo, la compatibilidad de código y complejidad en su desarrollo y modernización.

El rápido desarrollo de los idiomas de Internet y diseño web requiere la creación de medios compactos y versátiles de procesamiento de texto con una cantidad mínima requerida para este código. Que no es una excepción y es muy popular entre los principiantes y desarrolladores profesionales del lenguaje PHP. El lenguaje de expresiones regulares como las plantillas de texto para simplificar la tarea de manejar el texto y reducir el código para decenas y cientos de líneas. Muchos de los problemas no se pueden resolver en absoluto sin ella.

Las expresiones regulares en PHP

lenguaje PHP tiene tres mecanismos para trabajar con expresiones regulares – «ereg», «mb_ereg» y «preg». El más común es la interfaz «preg», cuyas funciones proporcionar acceso a la biblioteca del soporte para expresiones regulares PCRE, desarrollado originalmente para el lenguaje Perl, que se incluye en el paquete de PHP. Preg de búsqueda de funciones en una correspondencia de cadenas de texto dado, de acuerdo con un cierto patrón en el lenguaje de expresiones regulares.

Conceptos básicos de sintaxis

Como parte de un artículo corto es imposible describir en detalle toda la sintaxis de expresiones regulares, para esto existe una literatura especial. Se presenta sólo los elementos principales para mostrar las oportunidades de desarrollador y entender los ejemplos de código.

En PHP expresión regular se define formalmente muy difícil, y por lo tanto simplificar la descripción. Una expresión regular es una cadena de texto. Se compone de una plantilla dedicada separador y el modificador que indica la manera de manejarlo. Su posible inclusión en las diversas alternativas y repeticiones de patrones.

Por ejemplo, en la expresión / d {3} – d {2} – d {2} / m divisor es "/", seguido de la plantilla, y el símbolo «m» es el modificador.

Todo el poder de las expresiones regulares se codifica mediante meta-caracteres. El metacarácter principal lengua es la barra invertida – "". Se cambia el tipo de siguiente caracteres en el lado opuesto (es decir. E. convertido en un comodín carácter ordinario y viceversa). Otra importante metacarácter es una línea recta «|», especifica la plantilla alternativa. Más ejemplos de meta-caracteres:

^ Comience objeto o una cadena
( Comience sub-patrón
) subpattern final
{ Inicio cuantificador
} cuantificador fin
d dígito decimal de 0 a 9
D cualquier carácter que no es un número
s símbolo vacío, espacio, tabulación,
w diccionario de símbolos

PHP, el procesamiento de expresiones regulares, espacio considerado como un carácter válido por separado, por lo que la expresión de XYZ y ABC DONDE son diferentes.

Los sub-patrones

En PHP sub-patrones regulares de los paréntesis, y que a veces se llaman "subexpresiones". Realizar las siguientes funciones:

  1. alternativas de asignación. Por ejemplo, el patrón de calor (algo | Aves |) coincide con la palabra "calor", "Pájaro de Fuego" y "caliente". Y sin los soportes que sólo será una cadena vacía, "ave" y "caliente".

  2. sub-patrón "espectacular". Esto significa que si el patrón coincide con la subcadena, a continuación, devuelve todos los partidos. Para mayor claridad, damos un ejemplo. Dada la siguiente expresión regular: el ganador recibe ((oro | dorado) (medalla | taza)) – y la cadena de partidos, "el ganador se lleva una medalla de oro." Además de la frase inicial, se emitirán los resultados de la búsqueda: "medalla de oro", "medallas", "oro".

Operadores repeticiones (kvadrifikatory)

En la compilación de la expresión regular es a menudo necesario analizar la repetición de números y símbolos. Este no es un problema, si no una gran cantidad de repeticiones. Pero qué hacer cuando no sabemos el número exacto? En este caso, es necesario el uso de meta-caracteres especiales.

Para una descripción de repeticiones utilizadas kvadrifikatory – meta-caracteres para especificar el número. Kvadrifikatory son de dos tipos:

  • común entre paréntesis;
  • reducida.

cuantificador general afectado por el número mínimo y máximo de elemento repeticiones permitidas en la forma de dos números en los aparatos ortopédicos, tales como x {2,5}. Si no se conoce el número máximo de repeticiones, el segundo argumento no se especifica: x {2}.

cuantificadores abreviados son símbolos para el más común de repeticiones con el fin de evitar la sintaxis sobrecarga innecesaria. Por lo general, hay tres cortes:

1. * – cero o más repeticiones, lo que equivale a {0,}.

2. + – una o más repeticiones, es decir, {1} …

3.? – cero o sólo una repetición – {0,1}.

Ejemplos de expresiones regulares

Para aquellos que aprenden las expresiones regulares, ejemplos – el mejor libro de texto. Le damos algunos que muestran sus oportunidades con un mínimo de esfuerzo. Todo el código es totalmente compatible con las versiones 4.x de PHP y arriba. Para entender completamente la sintaxis y el uso de todas las características del lenguaje que recomendamos el libro de J .. Friedl, "expresiones regulares", que plenamente considera la sintaxis, y hay ejemplos de expresiones regulares no sólo PHP, sino también para un Python, Perl, MySQL, Java, Ruby y C #.

Validación de Dirección de correo electrónico

Tarea. Hay una página de Internet en la que se solicita al visitante dirección de correo electrónico. Expresión regular debe comprobar la exactitud de las direcciones antes de enviar mensajes. Cheque no garantiza que el buzón especificado en realidad existe y recibe mensajes. Pero, obviamente, eliminar a direcciones equivocadas que pueda.

Decisión. Al igual que con cualquier lenguaje de programación, en PHP verificación de correo electrónico Dirección de expresiones regulares puede implementarse de diferentes maneras, y los ejemplos de este artículo no son la elección final y solamente. Por lo tanto, en cada caso, vamos a proporcionar una lista de requisitos que deben tenerse en cuenta durante la programación y la aplicación específica depende enteramente del desarrollador.

Por lo tanto, la expresión que pone a prueba un correo electrónico válido, debe verificar las siguientes condiciones:

  1. La presencia en la línea de salida del símbolo @, y no hay huecos.
  2. La parte de dominio de la dirección del símbolo @, contiene sólo caracteres válidos para los nombres de dominio. Lo mismo sucede con el nombre del usuario.
  3. Al comprobar el nombre de usuario es necesario para determinar la presencia de caracteres especiales tales como un apóstrofo o línea vertical. Tales símbolos son potencialmente peligrosos y pueden estar contenidas en tales tipos de ataques que SQL-inyección. Evita las direcciones.
  4. nombres de usuario permiten a un solo punto, que puede no ser el primero o el último carácter de la cadena.
  5. El nombre de dominio debe contener por lo menos dos y no más de seis caracteres.

Ejemplo, teniendo en cuenta todas estas condiciones se puede ver en la siguiente figura.

Validación de una URL

Tarea. Compruebe si la cadena de texto especificada no es válida una dirección URL. Una vez más, observamos que las expresiones regulares URL de comprobación se puede realizar de varias maneras.

Decisión. Nuestra versión final es la siguiente:

/^(https?://)?([da-z.-]+).([az.]{2,6})([/w .-] *) * /? $ /

Ahora analizar sus componentes con más detalle mediante el dibujo.

la reivindicación 1 Antes de que la URL no debe tener ningún carácter
reivindicación 2 Verificar la presencia del prefijo obligatoria «http»
el punto 3 No debe haber símbolos
la reivindicación 4 Si hay «s», las URL apunta a una conexión segura «https»
la reivindicación 5 porción requerida del "//"
reivindicación 6 No hay personajes
p. 7-9 Verificación de la primera dominio de nivel y la presencia de punto
p.10-13 Verificar el dominio de escribir el segundo nivel y el punto
p.14-17

Estructura de archivos URL – un conjunto de números, letras, guiones, guiones, puntos, y una barra al final

Compruebe los números de tarjetas de crédito

Tarea. Es necesario para implementar la validación del número de tarjeta de crédito introducida de los sistemas de pago más comunes. Una variante sólo para las tarjetas Visa y MasterCard.

Decisión. Al crear la expresión que necesita para tener en cuenta la posible presencia de lagunas en la sala de entrada. Los dígitos en el mapa están divididos en grupos para facilitar la lectura y dictado. Por lo tanto, es natural que una persona puede tratar de introducir un número de esta manera (es decir. E. Uso de espacios).

Escribe una expresión universal que tiene en cuenta los posibles espacios o guiones, es más complicado que simplemente rechazar todos los caracteres excepto dígitos. Por lo tanto, se recomienda utilizar una expresión comodín / D, que elimina todos los caracteres excepto dígitos.

Ahora usted puede ir directamente al número de cheque. Todas las empresas, los emisores de tarjetas de crédito utilizan un formato de número único. En el ejemplo que se utiliza, y el cliente no tiene que introducir el nombre de la compañía – se determina por el número. Las tarjetas Visa siempre comienzan con los números 4 y tienen una longitud de 13 o 16 dígitos. MasterCard comienza en el rango de 51-55 con un largo número 16. Como resultado, se obtiene la siguiente expresión:

Antes de procesar la orden puede ser probado aún más los últimos dígitos del número, que se calcula en el algoritmo de Luhn.

verificar el número de teléfono

Tarea. Comprobar la corrección del número de teléfono introducido.

Decisión. El número de dígitos de los números de teléfono fijos y móviles varían considerablemente dependiendo del país, tan universalmente comprobar el uso de expresiones regulares, número de teléfono correctamente imposible. Pero los números internacionales tienen un formato estricto y perfecto para comprobar el patrón. Aún más, para que más y más operadores telefónicos nacionales están tratando de cumplir con el mismo estándar. estructura de la habitación es de la siguiente manera:

+ CCC.NNNNNNNNNNxEEEE, donde:

– C – es el código de país que consiste en 1-3 dígitos.

– N – número de hasta 14 dígitos.

– E – extensión opcional.

Plus es un elemento indispensable, y el signo X está presente sólo cuando sea necesario extensión.

Como resultado tenemos la siguiente expresión:

^ + [0-9] {1,3 } [0-9] {4,14}. (:?. + X)? $

Los números en el rango

Tarea. Es necesario asegurarse de número entero coincidencia de un cierto rango. Además, es necesario encontrar una expresión regular sólo los números de la gama.

Decisión. Aquí hay algunas expresiones a algunos de los casos más comunes:

Determinar horas del 1 al 24 ^ (1 [0-2] | [1-9]) $
Día en el mes 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
0-59 segundos o minutos ^ [1-5]? [0-9] $
Un número de 1 a 100 * (100 |? [1-9] [0-9]) $
Día del año 1-366 ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Buscar direcciones IP

Tarea. Es necesario determinar si una determinada cadena es una dirección IP válida en formato IPv4 en el rango de 000.000.000.000-255.255.255.255.

Decisión. Al igual que con cualquier problema en el lenguaje de PHP, la expresión regular tiene muchos varintov. Por ejemplo, esto:

La comprobación en línea de las expresiones

Compruebe expresión regular correctamente para principiantes puede ser difícil debido a la complejidad de la sintaxis, que se diferencia de los lenguajes de programación "normales". Para resolver este problema, hay muchos probadores línea expresiones que hacen que sea fácil de comprobar la exactitud de la plantilla que ha creado en el texto real. El programador introduce los datos de expresión y la verificación y al instante ver el resultado del procesamiento. Por lo general, no está presente una sección de referencia, que detalla las expresiones regulares, ejemplos y diferencias de implementación de los idiomas más extendidos.

Pero a servicios en línea totalmente la confianza no se recomienda resultados para todos los desarrolladores que utilizan PHP. Una expresión regular es escrita y verificada en persona, plantea cualificación y garantiza la inexistencia de errores.