验证句点分隔数字正则表达式

时间:2011-09-29 21:37:35

标签: regex

我有一个棘手的正则表达式。

  • 数字由句点分隔。
  • 最多可以有4个周期。每个时期之间可以有0到4个数字。

有效表达式包括

....
...
..
.
.1234.1234
..1234.1234.1234
1234.1234.1234.1234.1234 (this is the max string)
1234.1234
1234....1234
1234.1234.1234

无效字符串包括以下内容

12345 (too many digits example)
..1234...1234 (this is 5 periods)
1234.12345 (too many digits example)

提前致谢

2 个答案:

答案 0 :(得分:3)

我认为这不是特别棘手......只需重复一组句号+数字:

^\d{0,4}(\.\d{0,4}){0,4}$

编辑:使用正确的语法更好地工作。这对于btw来说是什么?

编辑2:根据您的正则表达式风格,您可能需要^$

答案 1 :(得分:1)

/^\d{0,4}(?!\d)(?:\.?\d{0,4}(?!\d)){0,4}$/

在JS中测试:

var r = /^\d{0,4}(?!\d)(?:\.?\d{0,4}(?!\d)){0,4}$/;

r.test('....'); // true
r.test('...'); // true
r.test('..'); // true
r.test('.'); // true
r.test('.1234.1234'); // true
r.test('..1234.1234.1234'); // true
r.test('1234.1234.1234.1234.1234'); // true
r.test('1234.1234'); // true
r.test('1234....1234'); // true
r.test('1234.1234.1234'); // true

r.test('12345'); // false
r.test('..1234...1234'); // false
r.test('1234.12345'); // false