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

WeA*_*ght 5 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;
  }
Run Code Online (Sandbox Code Playgroud)

我在SO上找到了一个相关的问题:HTML5中是否有minlength验证属性?但它接受空格和标签,我不想要.

下面是我的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="" />
Run Code Online (Sandbox Code Playgroud)

Rob*_*bie 5

我管理了一个愚蠢的骇客,它可以执行您的要求:

<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="" />
Run Code Online (Sandbox Code Playgroud)

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

您对“安东尼后面有空格”的评论不起作用,但是由于安东尼包含6个字符,那么可以吗?如果不是,您能否进一步澄清问题。


要解释它是如何工作的:

  • 它采用的模式为“采用1个非空格字符”,\S然后是“没有或更多的空格字符”\s*
  • 您需要将模式匹配6次或更多次,(pattern){6,}(\S\s*){6,}
  • 然后在前面留出更多或更多的空间 \s*

如果要将字符限制为仅Alpha,请将更改\S[A-Za-z]

是的,这是一个破解IMO,因为要在内部对长字符串进行解析将非常麻烦。但是工作。您可能还想与之混合maxlength以限制它?