Estou usando o seguinte regex
^[a-zA-Z0-9\',!;\?\$\^:\\\/`\|~&\" @#%\*\{}\(\)_\+\.\s=-]{1,1000}$
Eu sei que é feio, mas até agora ele serve a seu propósito diferente de a barra invertida não ser permitida como eu acho que deveria porque escapou, eu também tentei em \\
vez de, \\\
mas os mesmos resultados. Alguma ideia?
Respostas:
Se você estiver colocando isso em uma string dentro de um programa, você pode realmente precisar usar quatro barras invertidas (porque o analisador de string removerá duas delas ao "retirar o escape" dela para a string , e então o regex precisa de duas para um barra invertida regex de escape).
Por exemplo:
é interpretado como ...
é interpretado como ...
é interpretado como uma regex que corresponde a uma única barra invertida.
Dependendo da linguagem, você pode ser capaz de usar uma forma diferente de citar que não analisa as sequências de escape para evitar ter que usar tantas - por exemplo, em Python:
O
r
na frente das aspas o torna uma string bruta que não analisa escapes de barra invertida.fonte
new RegExp('\\\\\\d');
.Se não for um literal, você terá que usar
\\\\
para obter o\\
que significa uma barra invertida com escape.Isso porque existem duas representações. Na representação de string de seu regex, você tem
"\\\\"
, que é o que é enviado para o analisador. O analisador verá o\\
que ele interpreta como uma barra invertida de escape válida (que corresponde a uma única barra invertida).fonte
A barra invertida
\
é o caractere de escape para expressões regulares. Portanto, uma barra invertida dupla realmente significaria uma barra invertida literal única.\ (backslash) followed by any of [\^$.|?*+(){} escapes the special character to suppress its special meaning.
ref: http://www.regular-expressions.info/reference.html
fonte
De http://www.regular-expressions.info/charclass.html :
Em que idioma você está escrevendo a regex?
fonte
Esta solução corrigiu meu problema ao substituir a tag br para '\ n'.
fonte