我正在尝试验证 javascript 中的表单字段(使用 bootstrap/jquery),但我需要一个正则表达式来匹配一个字符串,该字符串是逗号分隔的数字列表,可能有也可能没有空格。
示例: 1,2,3,3.14,6.0,-3.14,-6,7.13,100
如果它们都是整数并且中间没有空格,我可以得到正则表达式,但是小数确实会使事情变得复杂。
最佳答案
你可以试试这个:
^(\s*-?\d+(\.\d+)?)(\s*,\s*-?\d+(\.\d+)?)*$
document.write(
/^(\s*-?\d+(\.\d+)?)(\s*,\s*-?\d+(\.\d+)?)*$/.test(
'1,2,3,3.14,6.0, -3.14, -6, 7.13,100'
)
);
如果您分解上面的正则表达式,您会注意到它正在捕获字符串中的第一个数字:
(\s*-?\d+(\.\d+)?)
为了捕获第一个数字,它会根据需要尝试匹配尽可能多的连续空格 \s*
,后跟可选的连字符(或负号)-?
,然后至少一位数字 \d+
,后跟一个可选小数点,小数点后至少有一位连续数字 (\.\d+)?
.
下一组捕获第一组之后的所有数字。
(\s*,\s*-?(\d+(\.\d+)?)*
与前一组相同,只是前面有一个额外的 \s*,
,允许在匹配逗号 之前有尽可能多的空格
。该组根据需要重复多次\s*
>,*
。
正则表达式以 ^
开头,以 $
结尾,以确保它从字符串 ^
的开头开始匹配,直到结尾字符串 $
.
关于javascript - 逗号分隔 float 列表的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36276394/