找不到正则表达式的错误

时间:2018-08-08 05:58:52

标签: javascript regex

我正在制作一个接受用户输入作为键的版本过滤器。该过滤器需要具有检查机制以禁用非法版本输入。 我的合法版本类似于1.2.3.4,因此我制作了一个正则表达式,

RegExp('^(\d+\.)*(\d+)$').test('1.2.3.4')

我最初的计划是,^(\d+\.)的含义类似于123., 1. (\d+)$的含义是充满数字的块。

但是它总是返回false,使我感到困惑;我不确定该如何做进一步纠正。

欢迎提出任何想法或建议。

2 个答案:

答案 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') 

是正确的。谢谢大家。