¿Podría alguien dar una lista completa de los caracteres especiales que deberían escaparse?¿Lista de todos los caracteres que deberían escaparse antes de ponerlos en RegEx?
Me temo que no conozco algunos de ellos.
¿Podría alguien dar una lista completa de los caracteres especiales que deberían escaparse?¿Lista de todos los caracteres que deberían escaparse antes de ponerlos en RegEx?
Me temo que no conozco algunos de ellos.
Echa un vistazo a la implementación de la función de PHP preg_quote
de PHP.JS, que debe hacer lo que necesita:
Los caracteres especiales de expresiones regulares son: . \ + * ? [^] $ () { } = ! < > | : -
Naaah estoy configurado manualmente en patrones listos. Tal vez más tarde creará una función para disminuir el tamaño del archivo. ¡Así que me olvidé de + =! <>: y - ¿esa es la lista completa? Gracias amigo;) – Somebody
Supongo que sabes lo que estás diciendo. :) ok, la respuesta está cerrada, lo acepto un poco más tarde, tal vez alguien tenga que agregar. :) – Somebody
Si estás escapando con str_replace, primero debes escapar \. En la lista anterior, si a. se reemplaza por \., \. luego será reemplazado por \\., que no es lo que se quiere. –
Según this site, la lista de los personajes de escapar es
[, la barra invertida \, el acento circunflejo ^, el signo del dólar $, el período o punto, la barra vertical o símbolo de canalización |., el signo de interrogación?, el asterisco o estrella *, el signo más +, el corchete de apertura (y el corchete de cierre).
Además de eso, tiene que escapar caracteres que son interpretados por el intérprete de Javascript como final de la cadena, es decir, ya sea '
o "
.
No sé qué hacer con ese sitio. Cubre muchos sabores de RegEx y no especifica a cuál de los que esta lista se aplica. – BaldEagle
El El guión (-) debe escaparse cuando está entre corchetes y no está ubicado al inicio o al final por ej. necesidad de escapar - para
[a-z0-9\-_]+
No hay necesidad de escapar - para
[a-z0-9_-]+
base fuera de la respuesta de Tatu Ulmanen, mi solución en C# tomó esta forma:
private static List<string> RegexSpecialCharacters = new List<string>
{
"\\",
".",
"+",
"*",
"?",
"[",
"^",
"]",
"$",
"(",
")",
"{",
"}",
"=",
"!",
"<",
">",
"|",
":",
"-"
};
foreach (var rgxSpecialChar in RegexSpecialCharacters)
rgxPattern = input.Replace(rgxSpecialChar, "\\" + rgxSpecialChar);
Tenga en cuenta que He cambiado las posiciones de '\' y '.', No procesar las barras primero dará lugar a la duplicación de las '\' s
Estaba buscando esta lista con respecto a la configuración "no-inútil-escape" de ESLint para reg-ex. Y descubrió que algunos de estos caracteres mencionados no necesitan ser escapados para una expresión regular en JS. La lista más larga en la otra respuesta aquí es para PHP, que requiere que se escapen los caracteres adicionales.
En this github issue for ESLint, aproximadamente a la mitad, el usuario not-an-aardvark
explica por qué el carácter al que se hace referencia en el problema es un personaje que tal vez debería escapar.
en JavaScript, un personaje que necesita ser escapado es una syntax character, o uno de estos:
^ $ \ . * + ? () [ ] { } |
La respuesta a la cuestión github he vinculado al anterior incluye explicación sobre "Anexo B" semántica (que no conozco demasiado) que permite que 4 de los personajes mencionados anteriormente sean descamados: ) ] { }
.
Otra cosa a tener en cuenta es que escaparse de un personaje que no requiere escaparse no hará ningún daño (excepto tal vez si estás tratando de escapar del personaje de escape). Por lo tanto, mi regla empírica personal es: "En caso de duda, escape"
Esta lista fue sorprendentemente difícil de encontrar. – dwjohnston