【问题标题】:Regex Patterns for HTML5 Text FieldHTML5 文本字段的正则表达式模式
【发布时间】:2012-12-28 21:45:47
【问题描述】:

我想在 javascript 中为带有地址的html text field 创建一个正则表达式模式。所以我只希望用户输入[a-z,A-Z,0-9]并且只有这些符号[,#-.]我还想防止用户发送空字符串并且最大字符数小于100。

这是html<input>

<input type="text" id="addy" maxlength="100"/>

我是 javascript 新手,所以我不知道如何创建一个能够遵守正则表达式模式的函数。

谢谢

编辑

按照kolink 的建议,我尝试了这个:

 <input type="text" style="width:285px" placeholder="Enter A Precise Address" name="address0" id="address"
     pattern="[ a-zA-Z0-9,#.-]+" maxlength="100" title="Standard address notation only"/>

这现在仅在其他 &lt;select&gt; 未被选中时才有效。否则它不会选择pattern 属性。然而,完全相同的代码在 jsfiddle 上按预期工作:http://jsfiddle.net/peD3t/7/ 但在浏览器中却没有。这是 pastebin 中的代码:http://pastebin.com/qQGJ4EK5

谢谢

【问题讨论】:

  • 展示你的代码来完成这个任务,人们会帮忙的
  • 尝试一下,在这里发布,并解释什么是行不通的。这不是为我做的论坛。当您尝试并失败然后成功时,您将学习

标签: javascript jquery html regex


【解决方案1】:

HTML5 为您提供了pattern 属性,它允许您要求特定的模式。在这种情况下,您需要pattern="[a-zA-Z0-9,#.-]+"

旧浏览器不支持这一点并不重要,因为您应该始终在服务器端进行验证。

【讨论】:

  • 感谢您推荐pattern 属性。但是,我无法像修改后的问题那样让它在我的 html 中工作。
  • 你用的是什么浏览器?
  • 没关系,显然模式已经锚定了。从开头和结尾删除^$,它应该可以工作。
  • 即使删除 ^$ 后仍然无法纠正
  • 您能否更新您的代码以显示您现在正在尝试的内容? JSFiddle 可能会有所帮助。
【解决方案2】:

$(document).ready(function() {

$('input').keyup(function() {
    var $th = $(this);
    $th.val( $th.val().replace(/[^a-zA-Z0-9,#.-]/g, function(str) { return ''; } ) );
});

});

这会起作用。

【讨论】:

    猜你喜欢
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    相关资源
    最近更新 更多