HTML5模式匹​​配和MinLength文本框问题 -

时间:2016-01-29 14:02:39

标签: regex html5 forms validation pattern-matching

我需要将这两种模式组合在一起,或者在<input>字段

中使用它们

我有模式匹配来检查有效时间 - 效果很好而且字段是&#34;不需要&#34;所以我们接受一个空白字段

 pattern="([01]?[0-9]|2[0-3])[0-5][0-9]"

我也想使用这种模式来允许空值或最大和最小长度只有4个字符...

 pattern=".{0}|.{4,4}"

我也设置了maxlength - 可能是多余的

maxlength="4"

所以基本上我需要一个4个字符的固定字符长度(时间为HHMM)或者无效 - 介于两者之间......

我很乐意使用minlength,但收到有关其在浏览器中被接受的相互矛盾的报道......

<input type="text" name="movie" maxlength="4" pattern="([01]?[0-9]|2[0-3])[0-5][0-9]" pattern=".{0}|.{4,4}" value='<?php echo $objResult["MOVIE"]; ?>'>

2 个答案:

答案 0 :(得分:1)

尝试以下模式:

(?:([01]?[0-9]|2[0-3])[0-5][0-9]|^$)

其中说:您的模式或空字符串(^$部分)。
提示:没有验证您的模式,只是为了让您了解这个概念。

答案 1 :(得分:1)

第一组中有一个可选数字:[01]?。它可以只输入3位数(前导0是可选的)。

现在,我知道您希望0强制使用,并添加使用空值的可能性。只需从?中删除[01]?量词,然后使用

<input pattern="(([01][0-9]|2[0-3])[0-5][0-9])?" title="4 digits please!" placeholder="0000"/>

外部()?使整个模式可选(一次或零次出现)。

input:valid {
  color: green;
}
input:invalid {
  color: red;
}
<form name="form1"> 
 <input pattern="(([01][0-9]|2[0-3])[0-5][0-9])?" title="4 digits please!" placeholder="0000"/>
 <input type="Submit"/> 
</form>

注意:默认情况下会锚定HTML5 pattern attribute值,即将整个模式转换为^(?:)$。您不必在模式之间添加^$,即使您按照Jan所做的方式添加替代方案,也不需要^ / $空值。

  

用于此属性的正则表达式语言与JavaScript中使用的正则表达式语言相同,只是模式属性与整个值匹配,而不仅仅是任何子集(有点像它暗示^(?:在模式的开始和结尾的)$