我正在尝试制作一个 <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 。
关于javascript - 模式 HTML/Javascript 中的无效转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41409872/