代码之家  ›  专栏  ›  技术社区  ›  Jake Metz

regex-名称中只允许一个空格和一个hypen

  •  0
  • Jake Metz  · 技术社区  · 6 年前

    目前,我的regex允许使用多个空格和连字符,但不允许在名称中逐个使用。

    目前它允许多个空格和炒作:

    vjbn-bjnlm-bnj-
    
    gvjhb vgbhjk vghj
    
    vgjbh-vgh vghb vghbj-
    

    我该如何调整它,使其只允许1个空间或每一个催眠:

    jhbn-vgbh vghjbj
    

    我现在的regex是:

    /^[À-ÿA-Za-z]+(?:[À-ÿA-Za-z]+|([-' ])(?!\1))*/
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   CertainPerformance    6 年前

    在开始时,您可以添加 .+-.+- 因此,排除具有多个破折号的字符串,然后再次使用相同类型的模式排除具有多个空格的字符串:

    ^(?!.+-.+-)(?!.+ .+ )[À-ÿA-Za-z]+(?:[À-ÿA-Za-z]+|([-' ])(?!\1))*
     ^^^^^^^^^^^^^^^^^^^^
    

    https://regex101.com/r/61kC3C/1