以下是我正在工作的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
答案 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
值是否为有效数字。