html模式,至少5个字符,但没有前导或尾随空格

时间:2018-07-04 10:25:16

标签: regex html5

出于安全原因,我想使用模式属性以HTML格式将密码限制为至少5个字符(任何语言的字母,数字,标点符号,special_charavters) 但我也想禁止前导或尾随空格,同时允许单词之间使用空格。因此length(trim(password)>=5)将是正确的。 因此正确的密码例如是

abc1245
abc12
1 34~_
1             34~_
спасибо Россия

以不正确的为例

a sd 
 123 __                  

我尝试使用此模式

^\b[/S ]{5,}*\b$

但是它不起作用。感谢您的帮助

3 个答案:

答案 0 :(得分:1)

我建议

pattern="\S(?:\s*\S){3}.*\S"

请参见regex demo

它将被编译为与之匹配的^(?:\S(?:\s*\S){3}.*\S)$模式

  • ^(?:-字符串的开头和未捕获组的打开
  • \S-非空格字符
  • (?:\s*\S){3}-重复3次
    • \s*-0 +空格字符
    • \S-非空格字符
  • .*-任意0个以上的字符
  • \S-非空格字符
  • )$-非捕获组的末尾以及HTML5引擎添加的字符串锚点的末尾。

input:valid {
  color: black;
}
input:invalid {
  color: red
}
<form name="form1"> 
 <input pattern="\S(?:\s*\S){3}.*\S" title="Please enter at least 5 non-whitespace chars, no leading/trailing whitespace allowed!" value=" abc __   " />
 <input type="Submit" /> 
</form>

注意:默认情况下,HTML5 pattern attribute的值是固定的,即整个模式都打包为^(?:)$。您不必在模式之间放置^$,即使您像Jan一样添加替代项,也不需要在^ / $周围加上空格。空值。

  

此属性所使用的正则表达式语言与JavaScript中所使用的正则表达式语言相同,不同之处在于pattern属性与整个值(不仅是任何子集)都匹配(有点像在{{1}模式的开头,^(?:结束)。

答案 1 :(得分:0)

尝试: <input type="text" required pattern="[^\s].{3,}[^\s]" name='foo'>

这将不允许任何第一个或最后一个为\s(空格)。在这两者之间,需要3(或更多)个东西,总计不超过5个字符。

请注意,包含5个字符的密码仍然很小,很容易被强制使用。尤其是如果有人获得了数据库或者您的服务器上没有暴力保护。

pattern属性不需要开始^和结束$标记。

答案 2 :(得分:0)

尝试使用正则表达式\S.{5,}\S

<input required pattern="\S.{3,}\S" title="Please match the format.">