HTML5最小字符长度验证忽略空格和制表符

时间:2017-01-19 05:01:58

标签: javascript regex html5

我正在使用HTML5'pattern'属性和'required'来验证输入框。 HTML5的必需属性可以工作,但它可以接受空格和制表符,这是不好的,因为用户只会放置空格。我需要正则表达式,它将接受空格和制表符,但只能计算字符的数量。示例“ronny jones”这应该给出10。

在javascript中我们使用类似的东西来做,我在HTML5中寻找类似的东西

      var name = document.forms['contact']['name'].value.replace(/ /g,""); // remove whitespace
  if(name.length<6){  // count number of character.
     document.getElementById('message').innerHTML="Enter correct Name";   
     return false;
  }

我在SO上发现了一个相关的问题:Is there a minlength validation attribute in HTML5?但它接受了空格和制表符,这是我不想要的。

以下是我的HTML5模式代码,

    <input type="text" name="name" class="form-control" placeholder="Your Full Name" pattern="[A-Za-z]{6,}" title="Name should have atleast 6 characters." required="" />

2 个答案:

答案 0 :(得分:5)

我管理了一个愚蠢的黑客行为,你做了你的要求:

ruby -v

ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]

gem install bundler

ERROR:  While executing gem ... (TypeError)
    no implicit conversion of nil into String

gem update --system

ERROR:  While executing gem ... (TypeError)
    no implicit conversion of nil into String

rails s

Rails 2.4.0 `<main>': undefined method `activate_bin_path' for Gem:Module (NoMethodError)**

必须有6个非空格字符才能通过。所以“asdfgh”,“abc def”会起作用,但“abc de”会失败。

关于“安东尼之后有空间”的评论不起作用,但是安东尼包含6个字符,那么它没关系?如果没有,你能否在问题中进一步澄清。

解释它的工作原理:

  • 它采用“取一个非空格字符”<input type="text" name="name" class="form-control" placeholder="Your Full Name" pattern="\s*(\S\s*){6,}" title="Name should have at least 6 characters." required="" /> 后跟“无空格字符”\S
  • 的模式
  • 您需要将模式匹配6次或更多次\s*,即(pattern){6,}
  • 然后在前面(\S\s*){6,}
  • 允许使用非空格或更多空格

如果您想限制仅允许使用Alpha的字符,请将\s*更改为\S

是的,这是一个黑客攻击IMO,因为在内部解析长字符串将是地狱。但是这份工作。您可能希望与[A-Za-z]混合以限制它?

答案 1 :(得分:4)

 <form action="demo.php">
    <input id="name" type="text" pattern="^((?:\s*[A-Za-z]\s*){6,})$">
    <input type="submit">
 </form>

这适用于您的情况..它非常适合您的需求。我设定的字符限制是从6到40 ..