如何使用正则表达式检查字母数字逗号分隔值?

时间:2014-11-04 11:03:06

标签: regex

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

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

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

  3. 接受 - 介于两者之间,但不能以 - 或

  4. 结束

    以下是有效字符串:

    1. ABC001, 11236, IU765, OI001-OI007, PO98, 98700
    2. VA009, VA778
    3. YU987
    4. 889022
    5. 以下是无效字符串:

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

2 个答案:

答案 0 :(得分:3)

请尝试以下正则表达式

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

检查以下内容:

  • 以字母或数字开头
  • 检查,-多于一种模式
  • 以字母或数字结尾

您可以在Regexr.com

在线试用

答案 1 :(得分:1)

遵循您的规则的正则表达式是^[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]+)*
  • 然后结束$
规则alphanum或破折号的

已编辑 再次编辑当规则发生变化时,再次