如何获得无门模式?

时间:2016-04-18 12:57:49

标签: regex html5

我正在使用代码

pattern="#?[0-9]+[/]?[0-9]+"

有效输入应为

3, #742, #742/53, 234/23

无效输入应为

#, 3#, 742/#45, 742/53#, #742/#53

http://jsfiddle.net/zajqD/167/

2 个答案:

答案 0 :(得分:2)

因为你有两个[0-9]+,你的模式只匹配至少有两位数的门号。您需要使用?量词对斜杠和第二个数字进行分组,而不仅仅是斜杠:

pattern="#?[0-9]+([/][0-9]+)?"

您也可能希望“锚定”您的模式,但HTML5标准已经是这种情况。

pattern="^#?[0-9]+([/][0-9]+)?$"

答案 1 :(得分:0)

试试这个

^#?\d+(?:\/\d+)?(?![\/\d#])

Regex demo

<强>解释
^:根据多线模式开始字符串或起始线 ?:一次或无sample
\d:0到9之间的一位数sample
+:一个或多个sample (?: … ):非捕获组sample
(?!…):否定前瞻sample