Javascript 正则表达式的含义是什么;小数点后两位的浮点,仅允许增量为0.25“;

Javascript 正则表达式的含义是什么;小数点后两位的浮点,仅允许增量为0.25“;,javascript,regex,Javascript,Regex,我需要一个正则表达式来匹配以下输入: .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…等 此外,数

我需要一个正则表达式来匹配以下输入:

 .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;
}

上述代码似乎可以执行此任务,但失败,因为它允许以下输入:

 .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)
0.25 0.50 0.75

它确实匹配1.25、1.50、1.75等等

如何将正则表达式更正为匹配:.25、.50和.75? 我想我的问题是:我确实有一个正则表达式,它可能也匹配负十进制数。当我试图摆脱积极和消极的符号, 我打破了这个表情

我真的很难理解这个角色?性格也是。 我的研究来自:


我正在努力实现的是: 与我上面描述的输入匹配的正则表达式
在这个过程中还需要学习正则表达式的一些基本知识。

为了清楚起见,您需要匹配1和9.75(包括1和9.75)之间的0.25的任意倍数,其中整数不能有
.00
,而半整数必须有
.50

如果是,您的正则表达式是:

/^[1-9](?:\.25|\.50|\.75|)$/
为了解释,这允许1到9之间的任何数字作为整数部分,然后是
.25
.50
.75
中的一个,或者是零


如果这不是你想要的,那么请澄清你的问题,因为它花了几分钟和多次尝试来理解这一点

需要明确的是,您希望匹配1和9.75(含1和9.75)之间的0.25的任意倍数,其中整数不能具有
.00
,而半整数必须具有
.50

如果是,您的正则表达式是:

/^[1-9](?:\.25|\.50|\.75|)$/
为了解释,这允许1到9之间的任何数字作为整数部分,然后是
.25
.50
.75
中的一个,或者是零


如果这不是你想要的,那么请澄清你的问题,因为它花了几分钟和多次尝试来理解这一点

尝试以下正则表达式:

/^(?:[1-9]|[1-9]?\.(?:25|50|75))$/
相配

  • 除零以外的任何整数1-9
  • 1-9或空字符串,后跟分数.25、.50、.75,最多为任意数字;不允许前导零
如果您想匹配更多的数字和可选的前导符号,您可以这样做

/^[-+]?(?:[1-9][0-9]*|(?:[1-9][0-9]*)?\.(?:25|50|75))$/

请尝试以下正则表达式:

/^(?:[1-9]|[1-9]?\.(?:25|50|75))$/
相配

  • 除零以外的任何整数1-9
  • 1-9或空字符串,后跟分数.25、.50、.75,最多为任意数字;不允许前导零
如果您想匹配更多的数字和可选的前导符号,您可以这样做

/^[-+]?(?:[1-9][0-9]*|(?:[1-9][0-9]*)?\.(?:25|50|75))$/

以下是您可以尝试的示例:

function match(n) {

    if (n.match(/^(|[1-9])\.(25|50|75)$/)) { return true; }
    return false;
}

console.log(match('1.25')); // true
console.log(match('0.25')); // false
console.log(match('.75')); // true
console.log(match('2.70')); // false
console.log(match('2.751')); // false
console.log(match('12.75')); // false
console.log(match('2.00')); // false

/* explanation
^           starts from
(|[1-9])    nothing or a Number between 1 & 9
\.          literal dot/point
(25|50|75)  either 25 or 50 or 75
$           end here
*/

以下是您可以尝试的示例:

function match(n) {

    if (n.match(/^(|[1-9])\.(25|50|75)$/)) { return true; }
    return false;
}

console.log(match('1.25')); // true
console.log(match('0.25')); // false
console.log(match('.75')); // true
console.log(match('2.70')); // false
console.log(match('2.751')); // false
console.log(match('12.75')); // false
console.log(match('2.00')); // false

/* explanation
^           starts from
(|[1-9])    nothing or a Number between 1 & 9
\.          literal dot/point
(25|50|75)  either 25 or 50 or 75
$           end here
*/


以下是的
的意思是“0或1次出现”。因此,例如,
[-+]?
表示一次匹配“-”或“+”或根本不匹配-基本上,符号是可选的“在数字被允许之前,没有正号或负号”。。。那你到底为什么在正则表达式中有[-+]??我想我一开始很天真地把[+-]包括进去了。然后我试图摆脱它,但打破了它expression@user3825558您是否也删除了之后的
?一个孤独的
会打破expression@adeneo但是正则表达式是一切的答案!!11!1一个!:不,你是对的,用简单的数学会更好
val>=1&&val<10&&val%0.25==0
可以。
表示“0或1次出现”。因此,例如,
[-+]?
表示一次匹配“-”或“+”或根本不匹配-基本上,符号是可选的“在数字被允许之前,没有正号或负号”。。。那你到底为什么在正则表达式中有[-+]??我想我一开始很天真地把[+-]包括进去了。然后我试图摆脱它,但打破了它expression@user3825558您是否也删除了之后的
?一个孤独的
会打破expression@adeneo但是正则表达式是一切的答案!!11!1一个!:不,你是对的,用简单的数学会更好
val>=1&&val<10&&val%0.25==0
可以。我可能错了,但
[-+]
并不意味着可选。
OP使其成为可选的,对吗?是的,我想要匹配的输入和我不想要匹配的输入似乎与您的表达式一起工作。我现在正在测试。ThanksI可能是错的,但是
[-+]
并不意味着可选。
OP使其成为可选的,对吗?是的,我想要匹配的输入和我不想要匹配的输入似乎与您的表达式一起工作。我现在正在测试。谢谢。我应该像你那样说明要求。你写的正是我想要的。为了进一步澄清,我还希望只匹配整数1、2、3、5、6、7、8和9。这个正则表达式仍然适用于此,请注意空或选项。你也可以写这个/^[1-9](?:\.25\.50\.75)?$/,尽管这只是我个人的喜好。我发现使用问号更容易阅读。@wolffer east我在写作时有些犹豫,但我认为
|)
在这里比
更好,因为似乎更明显的是,“或无”将是备选方案中的一个选项。@NiettheDarkAbsol足够公平,这不是我通常使用的语法,这就是为什么我觉得它更晦涩的原因。再说一遍,这都是个人喜好(除非有体育课)