我正在制作一个接受用户输入作为键的版本过滤器。该过滤器需要具有检查机制以禁用非法版本输入。
我的合法版本类似于1.2.3.4
,因此我制作了一个正则表达式,
RegExp('^(\d+\.)*(\d+)$').test('1.2.3.4')
我最初的计划是,^(\d+\.)
的含义类似于123., 1. (\d+)$
的含义是充满数字的块。
但是它总是返回false,使我感到困惑;我不确定该如何做进一步纠正。
欢迎提出任何想法或建议。
答案 0 :(得分:3)
我认为您应该使用以下正则表达式模式:
^\d+(\.\d+)*$
这将匹配一个独立的单个数字,例如5
或一个数字,后跟一个点和另一个数字,例如1.5
,依此类推。诀窍是使整个.NUMBER
一词为可选。
// positive cases
console.log(/^\d+(\.\d+)*$/.test('123'));
console.log(/^\d+(\.\d+)*$/.test('1.2.3.4'));
// negative cases
console.log(/^\d+(\.\d+)*$/.test('1.'));
console.log(/^\d+(\.\d+)*$/.test('Jon Skeet'));
答案 1 :(得分:0)
RegExp('^(\\d+\\.)*(\\d+)$').test('1.2.3.4')
是正确的。谢谢大家。