【问题标题】:HTML5 pattern - dont allow the following charactersHTML5 模式 - 不允许以下字符
【发布时间】:2016-05-06 01:13:49
【问题描述】:

我要屏蔽以下字符:

( 
) 
/ 
> 
< 
] 
[ 
\ 
" 
, 
; 
| 

我的模式有什么问题?

pattern="[^()/<>[]\,'|\x22]+"

【问题讨论】:

  • 你如何使用这个模式?
  • 返回的是误报还是误报?如果有,是哪些字符?尝试发布您的代码。马上,我认为您需要转义很多字符。
  • @ste-fu 贴什么代码?他已经发布了。他发布了pattern 属性。你认为他需要逃脱什么角色?
  • 您可以使用任何正则表达式测试站点对此进行微不足道的测试,这会指出您的错误。
  • @OronBenDavid:请在此处为所有答案投票,因为它们很有帮助。一些卑鄙的用户对他们所有人都投了反对票,因为他们认为我们不应该帮助你。这种做法非常糟糕,但不幸的是一些用户使用它。

标签: regex html forms validation


【解决方案1】:

我的模式有什么问题?

它包含一个否定字符类,您未能在其中转义 ] 符号。 在一个字符类内,它*必须在 JS 中转义,在一个字符类之外,你不必转义它。因此,您的 "[^()/&lt;&gt;[]\,'|\x22]+" 模式实际上意味着:匹配一个 并且只有一个! 字符,而不是 ()/&lt;&gt;[(带有 [^()/&lt;&gt;[] 部分),然后是 ,' 的*序列, -OR-(因为| 是一个交替运算符,如果没有在字符类之外转义)双引号(与\x22 匹配)后跟一个或多个文字] 符号(如]匹配字符类之外的文字 ]+ 是为其设置的量词。

你确实需要

pattern="[^()/><\][\\\x22,;|]+"

<form action="#" method="post">
<input name="name1" pattern="[^()/><\][\\\x22,;|]+" placeholder="New value" title="No special characters!">
<input class="submit" value="Submit!" type="submit" name="name2">
</form>

在字符类中,除了],还需要转义\ 符号。还有一个 - 如果它位于两个文字符号之间,但这里没有连字符。

注意:HTML5 pattern attribute 值是默认锚定的,即整个模式被包装成^(?:)$。您不必在模式之间放置^$

用于该属性的正则表达式语言与 JavaScript 中使用的相同,只是模式属性与整个值匹配,而不仅仅是任何子集(有点好像它在开头暗示了 ^(?:模式和最后的)$)。

【讨论】:

    【解决方案2】:

    您的模式包含],您应该使用\ 对其进行转义,其他字符也需要转义,例如\ 在转义另一个值的上下文中不使用时:

    &lt;form&gt;&lt;input pattern="[^()/&lt;&gt;[\]\\,'|\x22]+"&gt;&lt;input type=submit value=test&gt;&lt;/form&gt;

    【讨论】:

    • 非常感谢 :) 关于这个区域:|\\x22 第一个 '\' 用于 '|\' 那么第二个 '\' 用于什么?
    • 测试代码后留下的,测试代码的时候不行,所以我试了一下,但原因是我忘记运行代码了,将其删除。
    • 看起来仍然缺少一些字符 :) 顺便说一句,逗号不需要转义。好吧,"[^()/&lt;&gt;[\]\,'|\x22]+" 的答案是错误的。
    【解决方案3】:

    您可以使用下面的代码:

    emailPattern = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-14
      • 2019-04-17
      • 1970-01-01
      • 1970-01-01
      • 2011-08-14
      • 1970-01-01
      • 1970-01-01
      • 2016-08-21
      相关资源
      最近更新 更多