.*(\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;
答案 0 :(得分:5)
重点是Chrome和Firefox已经支持ES6正则表达式规范并默认支持Unicode模式。
Unicode模式对于在模式中可以转义哪些字符有更严格的规则。见this reference:
IdentityEscape :在BMP模式中,许多字符可以带有反斜杠作为前缀并被解释为自身(例如:如果
\u
后面没有四个十六进制数字,则会被解释作为u
)。 在仅适用于以下字符的Unicode模式中(为Unicode代码点转义释放\u
):^
$
\
.
{ {1}}*
+
?
(
)
[
]
{
}
< /强>
同一组字符在ES6 specs page中称为 SyntaxCharacter 。
所以,你只能逃避角色类中被认为是特殊角色的|
,并使它成为一个文字,你可以逃脱它。其他任何地方都不能逃脱。
-
答案 1 :(得分:1)
尝试使用以下概念来实现验证日期格式
<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;
您可以通过此链接找到更多验证 - http://html5pattern.com/Dates