javascript - 正则表达式: Help Matching a number less than 24

标签 javascript regex pattern-matching

所以我制作这个正则表达式来验证我为实习设计的网站上的一些文本框。

问题是我不太热衷于正则表达式,而且我即将拥有一个可以匹配 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-9
  • 1\d - 数字 10-19
  • 2[0-3] - 数字 20-23
  • (x|y|z) - xyz 之一
<小时/>

至于“为什么我的版本与 "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/

相关文章:

sed - 如何使用 sed 取消注释第二个模式匹配上的多行?

pattern-matching - Rust的比赛早破

javascript - 如何根据屏幕尺寸创建具有不同设置的 Bootstrap 轮播?

javascript - jQuery Steps 新步骤被添加到新行

javascript - Stripe 支付 : Getting Error as Customer cus_***** does not have a linked card with ID tok_*****

php - 将具有动态输入名称的数据保存到数据库?

angularjs - 正则表达式验证输入字段中单词的第一个字母不是特殊字符

Javascript 节点值

regex - 为什么这种否定的后视被认为是成功的正则表达式匹配?

regex - RE 到 NFA Thompson 的构造步骤 ((c|a)b*)*