REGEX模式创建



我需要一个正则表达式,允许单个字母或数字由逗号分隔,如1,2,3A,B,C和单个alpha或数字,如A C 1 2。它不应该允许123 abcABC

我试了^(?:([A-Z0-9a-z])(?!.?1),)[A-Z0-9a-z]$,但它不起作用。

我想这样可以。我保留^和$来和你的例子保持一致。我对你的问题的最好理解使我得出以下具体要求——这是我相信你想要的,但如果不是,那么我们需要更清楚地了解问题的设置和背景:

  1. 当逗号是分隔符时,您在示例中特别使用了全数字或全字母。然而,当空格是分隔符时,您使用字母和数字的混合。
  2. 我认为这是有意的交流,因此这导致要求IF分隔符是逗号,那么整个字符串中只允许一种类型的主字符-所有字母或所有数字。
  3. 而如果分隔符是空格,则允许字母和数字的混合
  4. 因此,这种要求需要多个带有竖线";"或";"的图案。操作符

^([A-Za-z](,[A-Za-z])*)|([0-9](,[0-9])*)|([A-Z0-9a-z]( [A-Z0-9a-z])*)$

这里有3个主要部分,由竖线算子分隔。在简单的语言中,它们可以表示为:

  1. 整个字符串可以是一个或多个字母,由单个逗号分隔,或
  2. 整个字符串可以是一个或多个数字,由单个逗号分隔,或
  3. 整个字符串可以是一个或多个字母或数字,以单个空格分隔(允许全alpha、全数字和混合)。

如果你不想混合和匹配空格和逗号的(所以1 2,3A C 1,2无效),您可以使用带有反向引用的捕获组:

^[A-Za-z0-9](?:([ ,])[A-Za-z0-9](?:1[A-Za-z0-9])*)?$

  • ^起始字符串
  • [A-Za-z0-9]匹配单个字符[a- za -z0-9]
  • (?:非捕获组
    • ([ ,])捕获组1,匹配空格或,
    • [A-Za-z0-9]匹配单个字符[a- za -z0-9]
    • (?:1[A-Za-z0-9])*可选地重复匹配在第1组中捕获的内容,后面跟着单个字符[a- za -z0-9]
  • )?关闭外部on捕获组并使其为可选
  • $字符串结束

Regex演示

最新更新