我正在尝试创建一个使用模式的输入字段来检查输入是否是有效的Windows文件路径。 我的模式是
/^(?:[\w]\:|\\)(\\[a-zA-Z_\-\s0-9\.()~!@#$%^&=+';,{}\[\]]+)+\.(exe)$/g
然而,当把它放入输入字段的pattern属性时:
<input id="path" type="text" pattern="^(?:[\w]\:|\)(\[a-zA-Z_\-\s0-9\.()~!@#$%^&=+';,{}[]]+)+\.(exe)$">
它说(在控制台中)
模式属性值 ^(:[\ W]:|?\)(\ [!一个-ZA-Z _- \ s0-9()〜@#$%^&安培; = +';, {} []] +)+ (exe)$是 不是有效的正则表达式:Uncaught SyntaxError:无效的常规 表达: /^(?:[\w]:|\)(\[a-zA-Z_-\s0-9.()~!@#$%^&=+';,{}[]]+) 。+(EXE)$ /: 转义无效
我尝试了几种不同的写作方式,但似乎都没有。
答案 0 :(得分:6)
您只需要转义必须转义的字符类中的字符,否则,您将始终收到此错误。
使用
pattern="(?:\w:|\\)(\\[\w\s.()~!@#$%^&=+';,{}[\]-]+)+\.exe"
请参阅JSFiddle
<强>详情:
]
[
和.
不得转义:
绝对不能被忽视,它绝不是特殊字符[a-zA-Z0-9_]
= \w
pattern
始终是固定的,您不需要^
和$
个锚点。