我正在尝试创建一个 <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/

    10-15 08:54