正则表达式在javaScript中使用浮点匹配数字

时间:2014-05-02 10:21:44

标签: javascript regex floating-point

以下是我正在工作的pattern

/^\d+((.\d+))?(,\d+((.\d+))?)*$/

支持

1.2,30.5,13.54

25.65

但我想要支持以下的pattern

1.3,.3,4.5

.3,.4,.6

.2

1.3,5.6,.5

4 个答案:

答案 0 :(得分:1)

根据您给出的示例,您需要一个小数部分,因此您可以使用

/(\d*\.\d+),?/

这将匹配每个给定的示例。 如果您还想匹配没有小数点的数字,只需添加第二个匹配:

/(\d*\.\d+|\d+),?/

哦,对于JavaScript,要添加“g”修饰符(用于全局搜索),您需要将它作为第二个参数添加到RegExp构造函数中:

re = new RegExp("(\d*\.\d+|\d+),?", "g");

示例:http://regex101.com/r/vL5aT0

好的,我不知道你的字符串匹配的目的是什么。如果您只是想验证它们,它们应该与您的示例完全相同,请使用:

/((\d*\.\d+|\d+),?)*(\d*\.\d+|\d+)$/

感谢Elergy指点我。 顺便说一句,Elergy的正则表达式也匹配无用的句点和逗号,如

.3,.4,.5,,,,8,.,7.,.,.,.,4.,.,.,.,.9,.,,,4.,,1,,

答案 1 :(得分:0)

如果我对你的问题的理解是正确的,这个表达可以帮助你:

/^\d*[\.,]\d*(?:,\d*[\.,]\d*)*$/

答案 2 :(得分:0)

/(\d+)?\.\d+(,?)/

(\d+)?匹配所有数字,但可选 \d+(,?)将所有数字与,匹配为可选项。

答案 3 :(得分:0)

之后你想和他们做什么?如果您的目标是识别逗号分隔的有效浮点数列表,则可以使用Number构造函数,如果编号无效(评估为NaN),则返回false

"1.3,5.6,a.s".split(",").every(Number)
false
"1.3,5.6,.5".split(",").every(Number)
true

我个人喜欢尽可能避免使用正则表达式,我认为这是非常自我记录的。 split ,上的字符串,并检查every值是否为有效数字。