代码之家  ›  专栏  ›  技术社区  ›  jayko03

regex不重复点字符javascript

  •  1
  • jayko03  · 技术社区  · 6 年前

    我用javascript编写了我的regex ^[a-zA-Z0-9.]+([.][a-zA-Z0-9]+)$ 我想把它过滤掉。

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

    这些是我期望通过的案例

    • 足球酒吧
    • 离岸价
    • foo.bar.foo(foo.bar.foo)
    • 传真:123.321

    这些是我期望的没有通行证的箱子

    • .foo
    • .foo.
    • foo.
    • 足球酒吧
    • .foo.bar条

    我觉得自己很亲近(或者根本不亲近)。如何过滤掉重复点字符?事先谢谢!

    1 回复  |  直到 6 年前
        1
  •  3
  •   Kerkouch    6 年前

    我想这就是你想要的:

    /^([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