正则表达式不重复点字符javascript

时间:2018-06-14 23:51:18

标签: javascript regex

我在javascript ^[a-zA-Z0-9.]+([.][a-zA-Z0-9]+)$中提出了我的正则表达式,我试图过滤掉字符串。

  • 开头和结尾都没有点字符
  • 点字符可以是其他字母或数字的中间
  • 如果点字符不能显示两次以上

这些是我预期的通过案例

  • foo.bar
  • f.o.o
  • foo.bar.foo
  • fo.123.321

这些是我预期的无通行证案件

  • 包含.foo
  • 包含.foo。
  • FOO。
  • foo..bar
  • .foo.bar

我觉得我非常接近(或者根本不是)。如何过滤掉点重复点字符?提前谢谢!

1 个答案:

答案 0 :(得分:3)

我认为这就是你要找的东西:

/^([a-zA-Z0-9]+\.)+([a-zA-Z0-9]+)$/

<强>测试

预期通过案件

/^([a-zA-Z0-9]+\.)+([a-zA-Z0-9]+)$/.test('foo.bar') // true
/^([a-zA-Z0-9]+\.)+([a-zA-Z0-9]+)$/.test('f.o.o') // true
/^([a-zA-Z0-9]+\.)+([a-zA-Z0-9]+)$/.test('foo.bar.foo') // true
/^([a-zA-Z0-9]+\.)+([a-zA-Z0-9]+)$/.test('fo.123.321') // true

预期的不合格案件

/^([a-zA-Z0-9]+\.)+([a-zA-Z0-9]+)$/.test('.foo') // false
/^([a-zA-Z0-9]+\.)+([a-zA-Z0-9]+)$/.test('.foo.') // false
/^([a-zA-Z0-9]+\.)+([a-zA-Z0-9]+)$/.test('foo.') // false
/^([a-zA-Z0-9]+\.)+([a-zA-Z0-9]+)$/.test('foo..bar') // false
/^([a-zA-Z0-9]+\.)+([a-zA-Z0-9]+)$/.test('.foo.bar') // false