invalid escape in pattern HTML/Javascript
12,777
You only need to escape the characters in the character class that must be escaped otherwise, you will always get this error.
Use
pattern="(?:\w:|\\)(\\[\w\s.()~!@#$%^&=+';,{}[\]-]+)+\.exe"
See the JSFiddle
Details:
- The hyphen must be at the end of the character class
- The
]
inside the character class must be escaped - The
[
and.
must not be escaped - The
:
must never be esacaped, it is never a special character -
[a-zA-Z0-9_]
=\w
- The
pattern
is always anchored by default, you need no^
and$
anchors.
Author by
Maurice Byrne
Updated on June 28, 2022Comments
-
Maurice Byrne almost 2 years
I am trying to make an
<input>
field that uses a pattern to check if the input is a valid windows file path.The pattern I have is
/^(?:[\w]\:|\\)(\\[a-zA-Z_\-\s0-9\.()~!@#$%^&=+';,{}\[\]]+)+\.(exe)$/g
However, when putting this into the pattern attribute of an
<input>
field:<input id="path" type="text" pattern="^(?:[\w]\:|\)(\[a-zA-Z_\-\s0-9\.()~!@#$%^&=+';,{}[]]+)+\.(exe)$">
An error is displayed in the console saying:
Pattern attribute value ^(?:[\w]\:|\\)(\\[a-zA-Z_\-\s0-9\.()~!@#$%^&=+';,{}\[\]]+)+\.(exe)$ is not a valid regular expression: Uncaught SyntaxError: Invalid regular expression: /^(?:[\w]\:|\\)(\\[a-zA-Z_\-\s0-9\.()~!@#$%^&=+';,{}\[\]]+)+\.(exe)$/: Invalid escape
I have tried several ways of writing this pattern, but none seem to work.
-
rinilnath over 2 yearsInvalid regular expression: /[\w'\,\.()\-\\/\+\!]{1,}/: Invalid escape, I am getting this error for one of my form:input tags regex in pattern attribute, in JSP page. Any suggestions on this escaping of backslash \ ?
-
Wiktor Stribiżew over 2 years@rinilnath Of course. Why did you escape every char in the character class? You only need to escape the characters in the character class that must be escaped. So, something like
pattern="[\w\x27,.()/+!-]+"
will work. -
rinilnath over 2 yearsso i can escape that \ without this?, i tried this in regextester.com it was escaping \, any easier way please
-
rinilnath over 2 yearsStribizew, Thanks much, but one small doubt, is it ok to escape the "SPACE" character with backslash or i can just give the space somewhere in regex group
-
Wiktor Stribiżew over 2 years@rinilnath You only need to escape the characters in the character class that must be escaped. Is space a special regex metacharacter? No. So, DON'T.