Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Google表单字段验证中的可重复正则表达式模式_Regex_Google Forms - Fatal编程技术网

Regex Google表单字段验证中的可重复正则表达式模式

Regex Google表单字段验证中的可重复正则表达式模式,regex,google-forms,Regex,Google Forms,我不熟悉正则表达式,在几次试图找到答案后,我在谷歌表单字段验证中遇到了一个问题。这是我目前的状况(): 预期答案应该是:peter50 | alex20 | 但是当被调查者填写类似于彼得50 |亚历克斯|(没有数字)的字段时,这也是一个匹配。我如何才能强制受访者按照一种模式指定姓名及其对应的号码 具体来说,它应该是:Name1 number1 | Name2 number2 | Name3 number3 | Name4 number4 |…… 谢谢大家! 您可以使用 ^(?:\p{L}+\s\

我不熟悉正则表达式,在几次试图找到答案后,我在谷歌表单字段验证中遇到了一个问题。这是我目前的状况():

预期答案应该是:
peter50 | alex20 |

但是当被调查者填写类似于彼得50 |亚历克斯|(没有数字)的字段时,这也是一个匹配。我如何才能强制受访者按照一种模式指定姓名及其对应的号码

具体来说,它应该是:
Name1 number1 | Name2 number2 | Name3 number3 | Name4 number4 |……

谢谢大家!

您可以使用

^(?:\p{L}+\s\d+\\124;)+$
请参阅(谷歌表单使用)

详情:

  • ^
    -字符串的开头
  • (?:
    -启动非捕获组:
    • \p{L}+
      -一个或多个字母
    • \s
      -空白(使用
      \s+
      允许一个或多个空白)
    • \d+
      -一个或多个数字
  • )+
    -结束分组,重复一次或多次
  • $
    -字符串结束
  • \\\$
您可以使用

^(?:\p{L}+\s\d+\\124;)+$
请参阅(谷歌表单使用)

详情:

  • ^
    -字符串的开头
  • (?:
    -启动非捕获组:
    • \p{L}+
      -一个或多个字母
    • \s
      -空白(使用
      \s+
      允许一个或多个空白)
    • \d+
      -一个或多个数字
  • )+
    -结束分组,重复一次或多次
  • $
    -字符串结束
  • \\\$

问题在于
+
匹配太多,因为
匹配任何字符

您可以在末尾使用管道重复匹配,并以大写字符[a-Z]开头

^(?:[A-Z]\w*\s[0-9]+\|)+$
  • ^
    字符串的开头
  • (?:
    非捕获组
    • [A-Z]\w*
      匹配大写字符A-Z和可选单词字符
    • \s[0-9]+\\\\\\
      匹配一个whitspace字符和1+个数字,然后
      \
  • )+
    关闭组并重复1+次以匹配多个事件
  • $
    字符串结尾

如果您的名称可以包含任何非空白字符,并且您希望根据逗号将数字与可选的小数部分匹配:

^(?:[A-Z][^\s|]*\s[0-9]+(?:,\d+)?\|)+$
  • ^
    字符串的开头
  • (?:
    非捕获组
    • [A-Z][^\s |]*
      匹配大写字符A-Z,后跟0+乘以除
      |
    • \s[0-9]+(?:,\d+)\ \124;
      匹配一个空格字符、1+位数和可选的小数部分,后跟
  • )+
    关闭分组并重复1+次
  • $
    字符串结尾

问题是
+
匹配太多,因为
匹配任何字符

您可以在末尾使用管道重复匹配,并以大写字符[a-Z]开头

^(?:[A-Z]\w*\s[0-9]+\|)+$
  • ^
    字符串的开头
  • (?:
    非捕获组
    • [A-Z]\w*
      匹配大写字符A-Z和可选单词字符
    • \s[0-9]+\\\\\\
      匹配一个whitspace字符和1+个数字,然后
      \
  • )+
    关闭组并重复1+次以匹配多个事件
  • $
    字符串结尾

如果您的名称可以包含任何非空白字符,并且您希望根据逗号将数字与可选的小数部分匹配:

^(?:[A-Z][^\s|]*\s[0-9]+(?:,\d+)?\|)+$
  • ^
    字符串的开头
  • (?:
    非捕获组
    • [A-Z][^\s |]*
      匹配大写字符A-Z,后跟0+乘以除
      |
    • \s[0-9]+(?:,\d+)\ \124;
      匹配一个空格字符、1+位数和可选的小数部分,后跟
  • )+
    关闭分组并重复1+次
  • $
    字符串结尾