我正在使用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="" />
答案 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
\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 ..