Estoy usando la siguiente expresión regular
^[a-zA-Z0-9\',!;\?\$\^:\\\/`\|~&\" @#%\*\{}\(\)_\+\.\s=-]{1,1000}$
Sé que es feo, pero hasta ahora cumple su propósito, además de que no se permite la barra invertida como creo que debería porque se escapó, también lo intenté en \\
lugar de los \\\
mismos resultados. ¿Algunas ideas?
Respuestas:
Si está poniendo esto en una cadena dentro de un programa, es posible que necesite usar cuatro barras diagonales inversas (porque el analizador de cadenas eliminará dos de ellas cuando lo "elimine" para la cadena , y luego la expresión regular necesita dos para una barra invertida de expresiones regulares de escape).
Por ejemplo:
se interpreta como ...
se interpreta como ...
se interpreta como una expresión regular que coincide con una sola barra invertida.
Dependiendo del idioma, es posible que pueda usar una forma diferente de citar que no analice las secuencias de escape para evitar tener que usar tantas, por ejemplo, en Python:
El
r
delante de las comillas lo convierte en una cadena sin procesar que no analiza los escapes de barra invertida.fuente
new RegExp('\\\\\\d');
.Si no es un literal, debe usarlo
\\\\
para obtener lo\\
que significa una barra invertida de escape.Eso es porque hay dos representaciones. En la representación de cadena de su expresión regular, tiene
"\\\\"
, que es lo que se envía al analizador. El analizador verá\\
cuál interpreta como una barra invertida de escape válida (que coincide con una sola barra invertida).fuente
La barra invertida
\
es el carácter de escape de las expresiones regulares. Por lo tanto, una barra invertida doble significaría una barra invertida única y literal.\ (backslash) followed by any of [\^$.|?*+(){} escapes the special character to suppress its special meaning.
ref: http://www.regular-expressions.info/reference.html
fuente
De http://www.regular-expressions.info/charclass.html :
¿En qué idioma estás escribiendo la expresión regular?
fuente
Esta solución solucionó mi problema al reemplazar la etiqueta br a '\ n'.
fuente