目的:验证 句子中的 sum(1,2,3) sum(a1,b3,e1)格式 是否正确
要求: sum(1,2,3,) 这种不符合要求, sum(1,2) 这种符合
问题: 最后面数字的逗号不要,不会弄
......sum(1,2,3,)......
const regex = /sum\((([-]?\d+(\.\d+)?,)|([a-z]{1,2}\d{1,2},))+\)/
var re = /sum\(([a-z]{1,2})?\d+(\.\d+)?(\s*,([a-z]{1,2})?\d+(\.\d+)?)*\)/;
['sum(a1,b3,e1)', 'sum(1,2,3)', 'sum(1,2,3,)'].forEach(i=>console.log(re.test(i)))
解决思路:将字符串sum(1,2,3) 进行拆分,前面一部分是“字母/数据 + ,”,后面一部分是“字母/数字”。
可参考:
const regex = /^sum((\w,)*(\w))$/ // 以sum( 开头,中间匹配多次 \w 与逗号的组合,最后以 \w) 结尾。
regex.test('sum(1,2,3,)') // true
regex.test('sum(3)') // true
regex.test('sum(1,2,3,)') // false