【问题标题】:Google Forms Regular Expressions (REGEX) comma delaminated (CSV)Google 表单正则表达式 (REGEX) 逗号分层 (CSV)
【发布时间】:2021-04-27 03:08:17
【问题描述】:

我有一个包含 1 个或多个 ID 的 Google 表单字段

模式:

  • ID 始终为 6 个数字。
  • 如果只输入一个 ID,则不需要逗号和空格。
  • 如果输入了多个 ID,则需要逗号和空格。
  • 如果输入了多个 ID,则最后一个 ID 的末尾不应有逗号或空格。

允许的示例:

  • 一个ID:123456
  • 多个ID:123456、456789、987654

这是我当前的正则表达式(无法正常工作)

[0-9]{6}[,\s]?([0-9]{6}[,\s])*[0-9]?

我做错了什么?

【问题讨论】:

    标签: regex google-forms


    【解决方案1】:

    对于您展示的示例,您能否尝试以下操作。

    ^((?:\d{6})(?:(?:,\s+\d{6}){1,})?)$
    

    Online demo for above regex

    说明:添加上述正则表达式的详细说明。

    ^(                     ##Checking from starting of value, creating single capturing group.
       (?:\d{6})           ##Checking if there are 6 digits in a non-capturing group here.
       (?:                 ##Creating 1st non-capturing group here
          (?:,\s+\d{6})    ##In a non-capturing group checking it has comma space(1 or more occurrences) followed by 6 digits here.
       ){1,})?             ##Closing 1st non-capturing group here, it could have 1 or more occurrences of it.
    )$                     ##Closing 1st capturing group here with $ to make sure its end of value.
    

    【讨论】:

    • @JamesReed68,哦,对不起,我认为 1 在这里有效 :( 让我编辑它。
    • 啊!我知道混乱在哪里。那是我的错。我已从“如果只输入 1 个 ID,则不需要逗号和空格”更新了我的问题。改为“如果只输入一个 ID,则不需要逗号和空格。”
    • @JamesReed68,不是问题,现在已经解决了,加油,学习愉快。
    • 感谢您的更新!现在完美运行。为了更好地理解正则表达式,使用您的代码^((?:\d{6})(?:(?:(?:,\s+\d{6})){1,})?)$ 比使用@The Fourth Bird 发布的其他代码^\d{6}(?:,\s\d{6})*$ 有什么好处吗?它们看起来不同,但结果相同(据我所知)
    • @JamesReed68,我刚刚还添加了一些非捕获组,它们的工作方式是相同的(逻辑上它们只是相同的)。好吧,实际上说 1 位数字让我感到困惑,否则我很可能会写出与@第四只鸟写的一样的内容,老实说(他的短小精悍比我的要好:)),干杯。跨度>
    【解决方案2】:

    你可以使用

    ^\d{6}(?:,\s\d{6})*$
    
    • ^ 字符串开始
    • \d{6}匹配6位数字
    • (?:非捕获组整体重复
      • ,\s\d{6} 匹配 , 一个空格字符和 6 位数字
    • )* 关闭群组并可选择重复
    • $ 字符串结束

    Regex demo

    【讨论】:

    • 这很好用,而且对于初学者来说更容易理解。谢谢!。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多