javascript - 逗号分隔 float 列表的正则表达式

标签 javascript regex

我正在尝试验证 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/

相关文章:

javascript - 如何通过 Javascript 获取 Magento baseUrl 然后在 jquery.hello-lightbox.min 中使用它?

Javascript Reactjs 按钮组件未显示

javascript - Undefined 不是 Backbone.js 中的函数

regex - R 中 SQL LIKE 运算符的等价物

javascript - 如何检查加载的 Javascript 代码的完整性

javascript - 如何在具有相同 ID 的元素上分配 API 获取随机颜色?

javascript - 正则表达式匹配中间的数字

javascript - 有人可以解释为什么这个正则表达式与不同的正则表达式风格匹配不同吗?

regex - 如何匹配 RewriteCond 中的子目录?

使用 re.match 的 Python 因长文本而挂起