模式HTML / Javascript中的无效转义

时间:2016-12-31 16:04:38

标签: javascript regex html5 validation input

我正在尝试创建一个使用模式的输入字段来检查输入是否是有效的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)$ /:   转义无效

我尝试了几种不同的写作方式,但似乎都没有。

1 个答案:

答案 0 :(得分:6)

您只需要转义必须转义的字符类中的字符,否则,您将始终收到此错误。

使用

pattern="(?:\w:|\\)(\\[\w\s.()~!@#$%^&=+';,{}[\]-]+)+\.exe"

请参阅JSFiddle

<强>详情:

  • 连字符必须位于字符类的末尾
  • 必须转义字符类中的]
  • [.不得转义
  • :绝对不能被忽视,它绝不是特殊字符
  • [a-zA-Z0-9_] = \w
  • 默认情况下,pattern始终是固定的,您不需要^$个锚点。