我有一个文本框,它可以有1或1,2或1,225,345,21之类的值,即多个值。但现在我想验证这个输入。
toString().match(/^(([0-9](,)?)*)+$/)
这是我正在使用的代码。它只是验证正确,但是当用户输入如下值时会出现一个问题:
inputval:1,22,34,25,645(true)
inputval:1,22,34,25,645,(falues)
当用户最后输入逗号(,)时,它应该抛出错误。
任何人都可以帮助我吗?
答案 0 :(得分:25)
只需手动包含至少一个:
/^[0-9]+(,[0-9]+)*$/
let regex = /[0-9]+(,[0-9]+)*/g
console.log('1231232,12323123,122323',regex.test('1231232,12323123,122323'));
console.log('1,22,34,25,645,',regex.test('1,22,34,25,645,'));
console.log('1',regex.test('1'));
答案 1 :(得分:4)
Ariel正则表达式的变种: - )
/^(([0-9]+)(,(?=[0-9]))?)+$/
,
后面必须跟一个数字(?=[0-9])
。
或者
/^(([0-9]+)(,(?!$))?)+$/
字符,
的结尾不能跟(?!$)
。
/^(?!,)(,?[0-9]+)+$/
我们检查第一个字符不是,
(?!,)
,然后我们将可选的,
放在数字前面。它是可选的,因为第一个数字块不需要它。