J'utilise l'expression régulière suivante
^[a-zA-Z0-9\',!;\?\$\^:\\\/`\|~&\" @#%\*\{}\(\)_\+\.\s=-]{1,1000}$
Je sais que c'est moche, mais jusqu'à présent, cela sert son objectif autre que la contre-oblique n'étant pas autorisée comme je pense qu'elle devrait parce qu'elle s'est échappée, j'ai également essayé \\
au lieu de \\\
mais les mêmes résultats. Des idées?
Réponses:
Si vous placez ceci dans une chaîne dans un programme, vous devrez peut-être utiliser quatre barres obliques inverses (car l'analyseur de chaîne en supprimera deux lors de la "déséchappement" de la chaîne , et l'expression régulière en a besoin de deux pour un antislash regex échappé).
Par exemple:
est interprété comme ...
est interprété comme ...
est interprétée comme une expression régulière qui correspond à une seule barre oblique inverse.
En fonction du langage, vous pourrez peut-être utiliser une forme différente de guillemets qui n'analyse pas les séquences d'échappement pour éviter d'en utiliser autant - par exemple, en Python:
Le
r
devant des guillemets en fait une chaîne brute qui n'analyse pas les échappements de backslash.la source
new RegExp('\\\\\\d');
.Si ce n'est pas un littéral, vous devez utiliser
\\\\
pour obtenir\\
ce qui signifie une barre oblique inverse échappée.C'est parce qu'il y a deux représentations. Dans la représentation sous forme de chaîne de votre regex, vous avez
"\\\\"
, qui est ce qui est envoyé à l'analyseur. L'analyseur verra\\
ce qu'il interprète comme une barre oblique inverse d'échappement valide (qui correspond à une seule barre oblique inverse).la source
La barre oblique inverse
\
est le caractère d'échappement des expressions régulières. Par conséquent, une double barre oblique inverse signifierait en effet une seule barre oblique inverse littérale.\ (backslash) followed by any of [\^$.|?*+(){} escapes the special character to suppress its special meaning.
réf: http://www.regular-expressions.info/reference.html
la source
Depuis http://www.regular-expressions.info/charclass.html :
Dans quelle langue écrivez-vous l'expression régulière?
la source
Cette solution a résolu mon problème en remplaçant la balise br par '\ n'.
la source