【问题标题】:regex - Allow only one space and one hypen in a name正则表达式 - 名称中只允许一个空格和一个连字符
【发布时间】:2018-08-28 14:18:42
【问题描述】:

目前,我的正则表达式允许使用多个空格和连字符,但只是不允许它们一个接一个地出现在一个名称中。

目前它允许多个空格和连字符:

vjbn-bjnlm-bnj-

gvjhb vgbhjk vghj

vgjbh-vgh vghb vghbj-

我如何将其调整为仅允许 1 个空间或 hypen EACH:

jhbn-vgbh vghjbj

我目前的正则表达式是:

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

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

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

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

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

    【讨论】:

    • 这将接受foo -bar 之类的内容。也许 OP 可以接受,也可以不接受。
    • 就是这样。哇非常感谢你的帮助。刚刚度过了我的一天:)
    • @JakeMetz 当某个答案解决了您的问题时,请考虑将其标记为已接受以表明问题已解决:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    相关资源
    最近更新 更多