【发布时间】:2023-03-22 02:55:02
【问题描述】:
我需要一个正则表达式来匹配以下输入:
.25
.50
.75
1.25. 1.50, 1.75 are allowed (increments of .25)
(2.0/2.00, 3.0/3.00, 4.0/4.00, 5.0/5.00 - not allowed)
允许的整数部分是 1-9 因此不允许使用 10.00 或 10.25...
不允许的特殊输入是:0、0.0 整数 1,2,3,4,5,6,7,8 和 9 是允许的,而 1.0/1.00, 2.0/2.00、3.0/3.00...等都是不允许的
此外,数字前允许使用否、正号或负号。
因此
0.25, 0.50, 0.75 应该是不允许的(当然.75之后只允许1)
到目前为止,我必须满足上述条件的正则表达式是:
/^[-+]?[0-9](\.[2|5|7]{1}[5|0]{1})?$/;
在我的 javascript 中,我有:
var catchfloat5 = /^[-+]?[0-9](\.[2|5|7]{1}[5|0]{1})?$/;
var catchint2 = /^[1-9]$/;
第二个正则表达式用于匹配整数 1-9。
在我做的代码中:
if(inputHours.match(catchfloat5) || inputHours.match(catchint2) ) {
//alert("Correct, you entered float or an int");
return true;
}
上面的代码似乎可以完成这项工作,但失败了,因为它允许以下输入:
0.25 0.50 0.75
它确实匹配 1.25、1.50、1.75 等等。
如何更正我的正则表达式以匹配:.25、.50 和 .75? 我认为我遇到的问题是:我确实有一个正则表达式也可能匹配负十进制数。当我试图摆脱正面和负面的符号时, 我打破了表达。
我确实很难理解 ?性格也。 我的研究来自: http://www.regular-expressions.info/quickstart.html
我想要完成的是: 与我上面描述的输入匹配的正则表达式 并在此过程中学习一些正则表达式的基础知识。
【问题讨论】:
-
?表示“0 或 1 次出现”。例如,[-+]?表示匹配“-”或“+”一次或根本不匹配 - 基本上,符号是可选的 -
“数字前不允许有正号或负号”...那为什么你的正则表达式中有
[-+]?? -
我想我一开始天真地包含了[+-]。然后我试图摆脱它,但打破了表达
-
@user3825558 你是否也删除了它后面的
??一个单独的?会破坏表达 -
@adeneo 但是正则表达式是一切的答案!!11!1one! :p 不,你是对的,用简单的数学会更好。
val >= 1 && val < 10 && val % 0.25 == 0会这样做。
标签: javascript regex