Primero, veamos dos caracteres especiales: '^' y '$'. Se utilizan para hacer coincidir el principio y el final de la cadena respectivamente. Aquí hay ejemplos:
"^The": coincide con los caracteres que comienzan con "The" String
"
;of despair$": coincide con la cadena que termina en "of despair";
"^abc$": coincide con la cadena que comienza con abc y termina con abc; de hecho, solo abc coincide;
"notice": coincide con cadenas que contienen aviso;
usted Puedes ver que si no usas los dos caracteres que mencionamos (el último ejemplo), eso significa que el patrón (expresión regular) puede aparecer en cualquier parte de la cadena que se está verificando y no lo usas. Bloquear a los lados.
También hay varios caracteres '*', '+' y '?', que se utilizan para representar el número u orden de aparición de un carácter. Representan respectivamente: "cero o más", "uno o más" y. "cero o uno." Aquí hay algunos ejemplos:
"ab*": Coincide con una cadena que consta de a y cero o más b ("a", "ab", "abbb", etc.)
; arriba, pero con al menos una b ("ab", "abbb", etc.);
"ab?": coincide con 0 o una b
"a?b+$": coincide con uno o 0 a seguido de Agregar más de uno; cadena que termina en b.
También puede limitar el número de caracteres que aparecen entre llaves, como
"ab{2}": coincide con una a seguida de dos b (nada menos) ("abb ")
; ": al menos dos b("abb", "abbbb", etc.);
"ab{3,5}": 2-5 b("abbb", "abbbb "o "abbbbb").
También debe tenga en cuenta que siempre debe especificar (es decir, "{0,2}", no "{,2}"). Del mismo modo, debe tener en cuenta que '*', '+' y '?' siguientes tres anotaciones de rango, "{0,}", "{1,}" y "{0,1}" respectivamente.
Ahora ponga una cierta cantidad de caracteres entre paréntesis, por ejemplo:
"a(bc)*": coincide con a seguido de 0 o uno "bc";
"a(bc){1,5}": uno a 5 "bc. "
también tiene un carácter '│', que es equivalente a la operación OR:
"hi│hello": coincide con una cadena que contiene "hi" o "hello";
"(b│cd)ef": coincide con una cadena que contiene "bef" O la cadena de "cdef";
"(a│b)*c": coincide con una cadena que contiene - varios (incluido 0) aob, seguidos de una cadena c
('.' ) que puede representar todos los caracteres individuales:
"a.[0-9]": una a seguida de un carácter seguido de un número (las cadenas que contengan dicha cadena coincidirán y este corchete se omitirá en el futuro)
"^.{ 3}$": termina con tres caracteres. El contenido entre corchetes solo coincide con un carácter.
"
[ab]": coincide con un solo carácter aob (igual que "a│b");
a' a 'd' (mismo efecto que "a│b│c│d" y "[abcd]");
"^[a-zA-Z]": Coincide con caracteres que comienzan con una letra Cadena
"[0-9] ]%": Coincide con cadenas que contienen x%
, "[a-zA-Z0-9]$": Coincide con cadenas que terminan con una coma seguida de un número o letra.
También puede poner los caracteres que no desea entre corchetes
Solo necesitausar
'^' como comienzo del corchete (es decir, "%[^a-zA-Z]%" coincide con dos signos de porcentaje con una cadena sin letras dentro).
interpretar, pero cuando "^.[$()│*+?{" se usa como un carácter con significado especial, debes agregar '' delante de estos caracteres, y en php3 debes evitar usar al comienzo de el patrón. Por ejemplo, la expresión regular "($│?[0-9]+" debería llamarse ereg("( \$│?[0-9 ]+", $str) (no lo hago). saber si es lo mismo en php4)
No olvide que los caracteres entre corchetes son una excepción a esta regla: dentro de corchetes, todos los caracteres especiales, incluido (''), perderán sus propiedades especiales (es decir, "[* +?{}.]" coincide con cadenas que contienen estos caracteres). Además, como nos dice el manual de regx: "Si la lista contiene ']', es mejor usarlo como el primer carácter de la lista. Un carácter (puede sigue '^'). Si contiene '-', es mejor colocarlo al principio o al final, o en el segundo punto final de un rango (es decir, [ad-0-9] El '-' en el medio será válido
para estar completo, debería cubrir las secuencias de clasificación, las clases de caracteres y las clases de equivalencia, pero no quiero entrar en demasiados detalles en estos aspectos, y no será necesario tratarlos en el capítulo. siguiente artículo. Puede encontrar más información en las páginas de manual de expresiones regulares.
Cómo crear un patrón para hacer coincidir la entrada de una cantidad de moneda
. Ahora usaremos lo que hemos aprendido para hacer algo útil: crear un patrón de coincidencia para verificar si. la información de entrada es un número que representa dinero. Creemos que hay cuatro formas de representar la cantidad de dinero: "10000,00" y "10,000,00", o sin parte decimal, "10000" y "10,000". Ahora comencemos a construir este patrón de coincidencia:
^[1-9][". 0 -9]*$
Esto significa que todas las variables deben comenzar con un número distinto de 0. Pero esto también significa que un solo "0" no puede pasar la prueba. La siguiente es la solución:
^(0│[1-9] [0- 9]*)$
"Solo coinciden 0 y números que comienzan con 0", también podemos permitir un signo negativo antes del número:
^(0│-?[1-9][0-9]*)$
Esto es: "0 o un número que comienza con 0 que puede tener un signo negativo delante". Bien, bien, ahora seamos menos estrictos y permitamos comenzar con 0. Ahora eliminemos el signo negativo, porque estamos representando monedas. no es necesario usarlo ahora especificamos el patrón para que coincida con la parte decimal:
^[0-9]+(.[0-9]+)?$
Esto implica que la cadena coincidente debe comenzar con al menos un árabe. dígito. Pero tenga en cuenta que "10." no coincide en el patrón anterior, solo "10" y "10.2" pueden (¿sabe por qué)
^[0-9]+(.[0-9]{ 2? })?$
Hemos especificado anteriormente que debe haber dos lugares decimales después del punto decimal. Si cree que esto es demasiado estricto, puede cambiarlo a:
^[0-9]+(.[0-9]{1. ,2})? $
Esto permitirá uno o dos caracteres después del punto decimal. Ahora que agregamos comas para facilitar la lectura (cada tercer dígito), podemos representarlo así:
^[0-9]{1,3}(. ,[ 0-9]{3})*(.[0-9]{1,2})?$
No olvides el signo más '+' que puede ser reemplazado por el signo de multiplicación '*' si desea permitir que se ingresen cadenas en blanco (¿Por qué? Además, no olvide que la barra invertida '' puede causar errores en las cadenas de PHP (un error muy común). Ahora que podemos confirmar la cadena, eliminaremos todas. comas str_replace(" ,", "", $money) Luego trate el tipo como doble y podemos hacer cálculos matemáticos a través de él.
Construyendo una expresión regular para verificar el correo electrónico
. Sigamos discutiendo cómo verificar una dirección de correo electrónico de forma completa. dirección de correo electrónico Hay tres partes en: nombre de usuario POP3 (todo lo que está a la izquierda de '@' ), '@' , nombre del servidor (esa es la parte restante). El nombre de usuario puede contener letras mayúsculas y minúsculas, números arábigos, puntos ('. '), menos ('-') y guión bajo ('_'). Los nombres de los servidores también siguen esta regla, excepto el guión bajo.
Ahora, los nombres de usuario no pueden comenzar ni terminar con puntos. No tiene dos. Debe haber al menos un carácter entre puntos consecutivos. Ahora veamos cómo escribir un patrón coincidente para el nombre de usuario:
^[_a-zA-Z0-9-]+$
La existencia de puntos es. todavía no está permitido. Pongámoslo Agregar:
^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*$
Lo anterior significa: "Comience con al menos un carácter canónico. (excepto . accidental), seguido de 0 o más cadenas que comienzan con un punto "
Para simplificarlo, podemos usar eregi() en lugar de ereg(). eregi() no distingue entre mayúsculas y minúsculas, por lo que no es necesario especificarlo. dos rangos" az " y "AZ" - solo necesita especificar uno:
^[_a-z0-9-]+(.[_a-z0-9-]+)*$
El nombre del servidor después es el mismo , pero se debe eliminar el guión bajo:
^[a-z0-9-]+(.[a-z0-9-]+)*$
Listo. Ahora solo use "@" para conectar las dos partes:
^[_a. -z0-9-]+ (.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$
Este es el completo modo de coincidencia de autenticación de correo electrónico, solo es necesario llamar
a eregi('^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[ a-z0-9-] +)*$ ',$eamil)
para saber si es correo electrónico.
Otros usos de expresiones regulares
para extraer cadenas
ereg() y eregi() tienen una característica que permite a los usuarios extraer parte de una cadena a través de expresiones regulares (puede leer el manual para un uso específico, por ejemplo, queremos extraer parte de). una cadena de ruta/URL Extrae nombres de archivos; lo que necesita es el siguiente código:
ereg("([^\/]*)$", $pathOrUrl, $regs);
echo $regs[1];
Las sustituciones avanzadas
ereg_replace() y eregi_replace() también son muy útiles: si queremos reemplazar todos los signos negativos separados con comas:
ereg_replace("[ nrt]+" , "," , recortar($cadena));