javascript - 模式 HTML/Javascript 中的无效转义

标签 javascript html regex validation input

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

相关文章:

php - 我需要在服务器端更改什么才能启用 chunkedMode = true?

javascript - TTT - html 和 javascript

javascript - 如何使用重新选择将 props 传递给包装在容器中的子组件?

javascript - 包含可拖动表格的 HTML 全尺寸 div

javascript - div标签对齐问题

php 表单使用 POST 在输入值字段中发送数组

javascript - 如何从 Javascript 字符串中删除特定的 "sequence"?

javascript - 正则表达式检查文件是否是图像

javascript - jQuery 掩码插件 : mask for negative integers

javascript - Meteor/Iron Router 外部重定向