谁能帮我找到合适的正则表达式来验证以逗号分隔的数字的字符串,例如'1,2,3'
或 '111,234234,-09'
等。其他任何内容都应视为无效。例如'121as23'
或 '123-123'
无效。
我想这在使用正则表达式的 Flex 中一定是可能的,但我找不到正确的正则表达式。
@Justin,我试过你的建议 /(?=^)(?:[,^]([-+]?(?:\d*\.)?\d+))*$/
但我面临两个问题:
- 它将使
'123,12'
无效,这应该是正确的。 - 它不会使无效的
'123,123,aasd'
无效。
我尝试了另一个正则表达式 - [0-9]+(,[0-9]+)*
- 它工作得很好,除了一个问题:它验证 '12,12asd '
。我需要一些只允许用逗号分隔的数字。
最佳答案
您的示例数据由三个十进制整数组成,每个整数都有一个可选的前导加号或减号,以逗号分隔且没有空格。假设这描述了您的要求,Javascript/ActionScript/Flex 正则表达式很简单:
var re_valid = /^[-+]?\d+(?:,[-+]?\d+){2}$/;
if (re_valid.test(data_string)) {
// data_string is valid
} else {
// data_string is NOT valid
}
但是,如果您的数据可以包含任意数量的整数并且可能有空格,则正则表达式会变得有点长:
var re_valid = /^[ \t]*[-+]?\d+[ \t]*(,[ \t]*[-+]?\d+[ \t]*)*$/;
如果您的数据可能更复杂(即数字可能是 float ,值可能包含在引号中等),那么您最好将字符串解析为 CSV 记录,然后检查每个值单独。
关于regex - 用于检查 Flex 中逗号分隔数值的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5262196/