Ya tengo un código de trabajo pero necesito que alguien me ayude a explicar por qué funciona si pueden.Regex para permitir solo caracteres alfanuméricos, coma, guión, guión bajo y punto y coma
Estoy usando PHP para reemplazar cualquier cosa en una cadena si no es ni az, AZ, 0-9, una coma, un punto y coma, guiones bajos o un guión (que en última instancia debería representar un nombre de usuario único, o lista separada por comas/punto y coma de nombres de usuario).
las siguientes obras:
$data = preg_replace('/[^,;a-zA-Z0-9_-]/s', '', $data);
pero los siguientes no:
$data = preg_replace('/[^a-zA-Z0-9_-,;]/s', '', $data);
qué hará esto sólo trabajo cuando la coma y el punto y coma son al comienzo? Ponerlos al final parece romper cosas (esto es lo que probé inicialmente cuando me encontré/[^ a-zA-Z0-9 _-]/s.
Como un lado, también estoy usando lo siguiente para recorte los arrastran punto y coma (plural) o comas (en plural) y alguien puede ser capaz de sugerir una manera más eficiente y/o elegante de hacer esto ?:
if(preg_match('/;$/', $data))
{
$data = rtrim($data, ';');
}
if(preg_match('/,$/', $data))
{
$data = rtrim($data, ',');
}
Gracias por cualquier ayuda :)
_" No hay una progresión clara desde '_ 'to', '" _: hay una progresión muy clara: se basa en la tabla Unicode. En este caso, sin embargo, '_' viene _after_', 'en la tabla Unicode, por lo que no es posible un rango. – Xufox
@Xufox - Bueno, eso sería una regresión, ¿no? ;) El punto es que no hay progresión que el motor de expresiones regulares entienda. Pero tienes razón, [aparentemente hay una progresión válida en la otra dirección] (http://rextester.com/YGC93292), de ',' a '_'. ¡No lo sabía hasta ahora, gracias! –