【问题标题】:Regex forward slash separator正则表达式正斜杠分隔符
【发布时间】:2019-09-09 19:31:52
【问题描述】:

我正在使用下面的正则表达式来确保字符串的长度最大为 50 个字符,并且每个单词都以大写字母开头:

reMatch("Jet Black","^(?=.{0,50}$)(^|^([A-Z][a-z]* +)*([A-Z][a-z]* *)$)")

这可行,但我也想允许选择用 / 字符分隔单词。示例:Jet/BlackJet / Black 之间有一个空格。

非常感谢您的建议!迈克。

【问题讨论】:

    标签: regex


    【解决方案1】:

    如果您不关心是否可能有多个空格、斜线或混合空格和斜线,您可以使用

    ^(?=.{0,50}$)(?:[A-Z][a-z]*(?:[ /]+[A-Z][a-z]*)*)?$
    

    请参阅regex demo

    在使用后只允许空格和可选的带有(空白)空格的单斜杠

    ^(?=.{0,50}$)(?:[A-Z][a-z]*(?:\s*(?:/\s*)?[A-Z][a-z]*)*)?$
    

    this regex demo

    详情

    • ^ - 字符串开头
    • (?=.{0,50}$) - 字符串应该只包含 0 到 50 个字符而不是换行符(与 (?!.{51}) 相同)
    • (?:[A-Z][a-z]*(?:\s*(?:/\s*)?[A-Z][a-z]*)*)? - 可选序列
      • [A-Z][a-z]* - 一个大写 ASCII 字母和 0+ 个小写 ASCII 字母
      • (?:\s*(?:/\s*)?[A-Z][a-z]*)* - 0 个或多个序列
        • \s* - 0+ 个空格
        • (?:/\s*)? - 一个可选的 / 和 0+ 个空格
        • [A-Z][a-z]* - 一个大写 ASCII 字母和 0+ 个小写 ASCII 字母
    • $ - 字符串结束。

    【讨论】:

      猜你喜欢
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-14
      • 2012-06-01
      • 2019-01-05
      相关资源
      最近更新 更多