我需要将这两种模式组合在一起,或者在<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"]; ?>'>
答案 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中使用的正则表达式语言相同,只是模式属性与整个值匹配,而不仅仅是任何子集(有点像它暗示
^(?:
在模式的开始和结尾的)$
。