【发布时间】:2019-10-07 11:52:29
【问题描述】:
我想让 javascript 正则表达式只匹配 8 到 15 之间的数字(不是负值)。正则表达式也应该接受小数点,如 8.7 或 9.5 等直到 15。
/^0*([89]|1[0-5])$/
我已经尝试过上面的正则表达式,但它不允许小数点。 谁能帮我制作 javascript 正则表达式?
【问题讨论】:
-
为什么你想用正则表达式来做这个?这是可能的,但它绝对是适合这项工作的错误工具。它基本上涉及列出每个可能的排列。而如果你只是把它当作一个数字,你可以做类似
num >= 8 && num <= 15 -
@VLAZ:你假设他们的输入是一个数字,这可能是也可能不是。例如,它可以是某种代码,因此
11.5有效,但11.534982347923无效。8 < n < 15在这里不起作用。 -
OP:只需在末尾添加
(\. that thing)?$ -
@georg 这是可能的,但我已经看到足够多的正则表达式在不应该使用的情况下使用。因此问题是 - 为什么是正则表达式。
-
抱歉,您的表达方式不太正确,至少根据您的定义,因为它允许大于 15 的数字(例如“15.5”有效)但也不允许任何没有小数点的内容(“9 “失败)。这加强了@VLAZ 的观点——这种解释并不是正则表达式的真正设计目的。更好的模式是重新识别一个数字,解析它,然后将范围测试为一个数字。要修复您的正则表达式,您需要将小数设为可选,并为“15”和“15.0”添加一个特定的例外,而不是“15.x”,其中 x>0。
标签: javascript