【问题标题】:HTML 5 Input regex pattern not workingHTML 5输入正则表达式模式不起作用
【发布时间】:2014-05-02 16:52:12
【问题描述】:

由于某种原因,我在使用 HTML5 表单验证模式属性时遇到了问题。我正在尝试匹配此条件/[!?^$\\\/{}]/g。我尝试使用全局属性转义\ 删除\,删除[],几乎所有内容。所以总是第一次在stackoverflow上发布问题。

简而言之,用户不应输入以下\/${}

<form action="#">
    <input type="text" required pattern="/[!?^$\\\/{}]/g">
    <button type="submit">Submit</button>
</form>

4.20 - 4.21 New export -> 应该是有效的

4/20 - 2/21 $New {export} -> 应该是无效的

这是小提琴:http://jsfiddle.net/TV28A/

【问题讨论】:

  • 您要针对哪些字符串验证此正则表达式?
  • 我认为你不能使用 /.../g 格式SO - Click here
  • 你的意思是作为一个例子?如果用户做了4/20 - 4/21 $Date 那应该被拒绝。它应该接受除\/${} @GregBurghardt 之外的所有字符串字符
  • @JasonWilczak 已经尝试过了,但没有成功
  • 您能否提供一个您希望被视为有效且您不认为有效的字符串示例?

标签: javascript regex html


【解决方案1】:

我已经尝试了上述所有答案,并且所有答案都有效(不知道我是否测试错了)。但以防万一:

我想如果你只想阻止\/${} 字符,这应该是正确的正则表达式[^\/\\${}]*

所以代码应该是这样的:

<form action="#">
    <input type="text" required pattern="[^\/\\${}]*">
    <button type="submit">Submit</button>
</form>

^ 字符作为第一个字符放入括号中,它否定了句子,所以[^\/\\${}]* 表示具有任何大小的/ \ $ { } 的字符串。

编辑:

按照 cmets 中的要求共享 jsFiddle

【讨论】:

  • 你能展示一个 jsFiddle 吗?我无法让它工作。
  • 按要求发布了 jsFiddle @jfriend00
【解决方案2】:

使用pattern 属性时,您无需将RegEx 包含在/ 中。此外,g 标志也是不必要的,因为表达式必须匹配整个输入字段,而不仅仅是其中的一部分。

这应该足以满足您的目的:

<form action="#">
  <input type="text" required pattern="[!?^$\\\/{}]">
  <button type="submit">Submit</button>
</form>

【讨论】:

  • 你们用 jsfiddle 链接尝试过吗?似乎没有工作。抄送:@jfriend00
  • 这不会根据需要验证 OP 的字符串 FIDDLE
  • @JasonWilczak 我一定要疯了,但你的小提琴不适合我。
  • 是的,我的意思是根据我提供的小提琴表明答案不起作用,对此感到抱歉:)
猜你喜欢
  • 2018-04-15
  • 1970-01-01
  • 1970-01-01
  • 2013-09-08
  • 2018-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多