【问题标题】:How to check alphanumeric comma separated value using regular expression?如何使用正则表达式检查字母数字逗号分隔值?
【发布时间】:2014-11-04 11:03:06
【问题描述】:

我需要帮助为以下字符串编写正则表达式:

  1. 输入的范围必须用逗号 + 空格分隔

  2. 可以采用字母数字字符。

  3. 在两者之间接受 - 但不能以 - 或 , 结尾

以下是有效字符串:

  1. ABC001, 11236, IU765, OI001-OI007, PO98, 98700
  2. VA009, VA778
  3. YU987
  4. 889022

以下是无效字符串:

  1. ,,,&*(&
  2. AB998,,,, AB998
  3. AB005-AB002,-

【问题讨论】:

  • 1 根据规则 #1,有效字符串 #2 如何有效? 2 您使用的是哪种语言/正则表达式引擎? 3 规则 #2 将 真的 仅使用正则表达式就很棘手,你能不以编程方式检查一个 after 解析吗?
  • 我现在更改了问题。
  • 我会用, 分割字符串,然后检查所有位是否都是有效的字母数字
  • @Priscy 尽管如此;根据规则 #1,有效字符串 #2 如何有效?逗号后面没有空格。
  • 那么#1 有效吗?有一个- 不是字母数字字符

标签: regex


【解决方案1】:

请尝试以下正则表达式

^[A-Z0-9]+((,\s|-)[A-Z0-9]+)*[A-Z0-9]+$

这会检查以下内容:

  • 以字母或数字开头
  • 检查 ,- 是否有超过 1 个模式
  • 以字母或数字结尾

您可以通过Regexr.com在线试用

【讨论】:

    【解决方案2】:

    遵循规则的正则表达式是^[a-zA-Z0-9-]*[a-zA-Z0-9]+(?:, [a-zA-Z0-9-]*[a-zA-Z0-9]+)*$

    规则意味着:

    • 从一开始^
    • 一个或多个有效字符(虽然不以破折号结尾)[a-zA-Z0-9-]*[a-zA-Z0-9]+
    • 后跟任意数量的
      • 逗号空格
      • 后跟一个或多个有效字符
      • --> (?:, [a-zA-Z0-9-]*[a-zA-Z0-9]+)*
    • 然后结束$

    EDITED 用于规则字母数字或破折号
    EDITED AGAIN 当规则更改时,再次

    【讨论】:

    • 请再次检查问题。很抱歉给您带来不便
    • @Priscy - 请先弄清楚你想问什么......因为规则已经改变而拒绝回答对我来说似乎有点粗鲁
    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    相关资源
    最近更新 更多