我有一个棘手的正则表达式。
有效表达式包括
....
...
..
.
.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)
提前致谢
答案 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