HTML输入模式不起作用

时间:2016-10-06 11:49:10

标签: html regex html5 forms input

.*(\d{3}\-\d{3}\-\d{2}\-\d{2}|\d{3}\-\d{2}\-\d{2}\-\d{3}|\d{10}).*这种模式运作正常。但突然间,它最近停止了铬和歌剧的工作。这里发生了什么?这里有什么问题以及它是怎么回事? Opera正在通知无效的逃脱,同样在chrome中。我在js中检查它时工作正常。



<form>
<input type="text" pattern=".*(\d{3}\-\d{3}\-\d{2}\-\d{2}|\d{3}\-\d{2}\-\d{2}\-\d{3}|\d{10}).*">
<button>
Send
</button>
</form>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:5)

重点是Chrome和Firefox已经支持ES6正则表达式规范并默认支持Unicode模式。

Unicode模式对于在模式中可以转义哪些字符有更严格的规则。见this reference

  

IdentityEscape :在BMP模式中,许多字符可以带有反斜杠作为前缀并被解释为自身(例如:如果\u后面没有四个十六进制数字,则会被解释作为u)。 在仅适用于以下字符的Unicode模式中(为Unicode代码点转义释放\u):^ $ \ . { {1}} * + ? ( ) [ ] { } < /强>

同一组字符在ES6 specs page中称为 SyntaxCharacter

所以,你只能逃避角色类中被认为是特殊角色的|,并使它成为一个文字,你可以逃脱它。其他任何地方都不能逃脱。

-

答案 1 :(得分:1)

尝试使用以下概念来实现验证日期格式

&#13;
&#13;
<form onsubmit="alert('Submitted.');return false;"><input required="" pattern="(0[1-9]|1[0-9]|2[0-9]|3[01]).(0[1-9]|1[012]).[0-9]{4}" value="" name="dates_pattern0" id="dates_pattern0" list="dates_pattern0_datalist" placeholder="Try it out." type="text"><input value="»" type="submit"></form>
&#13;
&#13;
&#13;

您可以通过此链接找到更多验证 - http://html5pattern.com/Dates