Regex 介于0和1之间的浮点数正则表达式
我正在尝试验证浮点数的输入,最大值为Regex 介于0和1之间的浮点数正则表达式,regex,Regex,我正在尝试验证浮点数的输入,最大值为1.0,最小值为0 Min : 0 Max : 1 可能值 0.1 0.99 0.365 如何使用正则表达式成功?此正则表达式应该可以很好地执行以下操作: /((0(\.[0-9]*)?)|(1(\.0)?))/ 除非您计划匹配指数形式的浮点。这对我来说很有效: 0+([.][0-9]+)?|1([.]0)? 还是我错过了什么?:) 这将使用可选符号匹配[0,1]中的浮点数,但如果使用科学记数法或数字以小数点开头,则不匹配 \+?(0(\.[0-9]+
1.0
,最小值为0
Min : 0
Max : 1
可能值
0.1
0.99
0.365
如何使用正则表达式成功?此正则表达式应该可以很好地执行以下操作:
/((0(\.[0-9]*)?)|(1(\.0)?))/
除非您计划匹配指数形式的浮点。这对我来说很有效:
0+([.][0-9]+)?|1([.]0)?
还是我错过了什么?:) 这将使用可选符号匹配[0,1]中的浮点数,但如果使用科学记数法或数字以小数点开头,则不匹配
\+?(0(\.[0-9]+)?|1(\.0+)?)
解释如下:
0 # a zero
(\.\d+)? # a dot and min 1 numeric digit - this is made optional by ?
| # or
1\.0 # one, a dot and a zero
如果您需要它来匹配整个sring,那么您需要插入符号和美元符号来分别表示字符串的开头和结尾,如^(0(\.\d+)| 1\.0)$
此外,如果要查找可能的负数,则需要在前面加上可选的减号,如
^-?(0(\.\d+)?\124; 1\.0)$
。当然,对于指数,模式需要更改。作为javascript正则表达式:
/^(0(\.\d+)?|1(\.0+)?)$/
一般解决办法:
^0*(?:(?:0(?:\.\d*)?\d+)\1(?:\.0*)?)$
格式:
^
0*
(?:
(?:
0
(?: \. \d* )?
| \. \d+
)
|
1
(?: \. 0* )?
)
$
就是这样:
/^(0+\.?|0*\.\d+|0*1(\.0*)?)$/
^(?)
这将接受以下格式的数字[0,1]
0
0.5
5.
1.
1
1
只要读一篇关于regex的简介就行了。
希望这能奏效
^(0.0*[1-9](\d+)?)$
如果我遗漏了什么,请告诉我。你为什么要使用Regex?即使如此,你尝试了什么?科学记数法是否可以接受(1.2e-1)?是否需要前导零(例如,.123是否正确)?符号是否正确(+0.5)?尝试学习Regex@RohitIs此验证(字符串仅包含数字,你要检查)或匹配(查找与正则表达式匹配的子字符串)?如果您试图学习正则表达式(或任何东西),解决方案将略有不同。@tylerdurden,问一些只有具体的最终答案的问题不会有多大帮助。我认为“阅读、尝试、失败、重复直到成功”的方法在这里更合适;也许接下来会问一个问题:“我让X工作了,但为什么尝试Y却没有,为什么?”这也将匹配1.9
。与边界不匹配?太多不必要的内容,并且缺少重要的锚定:^(0\。\d*| 1\.0)$
你也忘了0
和1
。我不是来学习的,Tylerduden是。如果他想了解这是如何工作的,他可以想出额外的步骤。@MihaiStancu:希望他测试了代码。实际上有很多方法可以指定从0到1的数字,即使没有exp.form。正则表达式中的细微更改可以允许或不允许w some.it匹配大于1的数字,但我没有包含第一个反斜杠,因此表达式完全不匹配。但是,它将匹配111
三次1
,除非您添加类似$
,\s
,[^0-9]
或类似的东西在多个数字之间强制执行某种分隔。它不匹配1.1
,但它分别匹配第一个和第二个1
。与2.0
类似-它匹配0
。虽然此代码片段可以解决问题,但确实有助于提高您的帖子质量。Rememb呃,你是在将来为读者回答这个问题,而那些人可能不知道你的代码建议的原因。@NathanOliver,我的目标是那些在形成表达式方面有困难但自己能阅读和理解的人。@NathanOliver,顺便说一句,被接受的答案也没有任何解释。你的nswer出现在审查队列中。它看起来不错,所以我只是评论说,如果有一个解释,它会更好。我不是要挑出你,只是添加了一些建设性的批评。如果你不想添加任何东西,你不必添加任何东西。你的正则表达式匹配的这部分0*1\.?0*
,我也做了.0
可选1
。除此之外,还有很好的解决方案。还匹配负值
^(0.0*[1-9](\d+)?)$