所以我制作这个正则表达式来验证我为实习设计的网站上的一些文本框。
问题是我不太热衷于正则表达式,而且我即将拥有一个可以匹配 0-24 之间且不超过两位小数的数字的可用正则表达式。
这就是我到目前为止所拥有的。该模式还可以匹配任何字符串;例如,"a"
或 "az"
。
var pattern = "^([0-9]{0,2}?.?[0-9]{0,2}|1[0-9].?[0-9]{0,2}|2[0-4].?[0-9]{0,2})$";
最佳答案
要获取 0 到 24 之间的数字(不包括 24),最多可选择两位小数:
^(\d|1\d|2[0-3])(\.\d{1,2})?$
<小时/>
小数部分:
\.
- 匹配小数点\d{1,2}
- 一位或两位数字()?
- 使其可选
整个部分:
\d
- 数字 0-91\d
- 数字 10-192[0-3]
- 数字 20-23(x|y|z)
-x
、y
或z
之一
至于“为什么我的版本与 "a"
和 "az"
部分匹配” - 这有点复杂,但它基本上归结为你使用点(如 .?
)。在正则表达式中,点表示“任何一个字符”。为了使其与文字点匹配,您需要像我一样用斜杠对其进行转义。
小备注:如果您希望单位数字可选前导零,请将 1\d
替换为 [01]\d
。如果您希望单位数字强制前导零,请将 \d|1\d
替换为 [01]\d
。如果您不需要前导零,请保持原样。
关于javascript - 正则表达式: Help Matching a number less than 24,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38398763/