我正在尝试创建一个 <input>
字段,该字段使用模式来检查输入是否为有效的 Windows 文件路径。
我的模式是
/^(?:[\w]\:|\\)(\\[a-zA-Z_\-\s0-9\.()~!@#$%^&=+';,{}\[\]]+)+\.(exe)$/g
但是,将其放入
<input>
字段的模式属性时:<input id="path" type="text" pattern="^(?:[\w]\:|\)(\[a-zA-Z_\-\s0-9\.()~!@#$%^&=+';,{}[]]+)+\.(exe)$">
控制台中显示一条错误消息:
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
我尝试了几种编写此模式的方法,但似乎都没有奏效。
最佳答案
您只需要转义字符类中必须转义的字符,否则,您将始终收到此错误。
采用
pattern="(?:\w:|\\)(\\[\w\s.()~!@#$%^&=+';,{}[\]-]+)+\.exe"
见JSFiddle
详细信息 :
]
必须转义 [
和 .
不得转义 :
永远不能被转义,它永远不是一个特殊字符 [a-zA-Z0-9_]
= \w
pattern
总是默认 anchor 定的,不需要 ^
和 $
anchor 定。 关于javascript - 模式 HTML/Javascript 中的无效转义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41409872/