-1

我们需要使用具有特定验证规则的正则表达式来验证逗号分隔的字符串:

  1. 除了字母数字值,只允许使用逗号、冒号、空格和连字符
  2. 如果我们在子字符串中有一个冒号 (:):
    • 两边的字符串长度应该匹配。
    • 两边的空格或连字符(仅允许)的位置也应该匹配。
    • 两边的字符串不能以 - 或空格开头/结尾。

下面是一个有效字符串的例子:

asd asds:121 asdd,qrt-123:rwt-wqe,ADER*,AASD 

有效的:

  • 100a
  • 100测试*
  • 100a,100a,100a*
  • 100-1000:300-ASDS
  • asd asds:121 asdd,qrt-123:rwt-wqe

无效的有:

  • 100a*w
  • 100-10:10-10
  • 九月 j:se pj
  • 100-10:100-10,ABC DER:AB CD

这是我们迄今为止尝试过的,但它只关注基础:

[0-9a-zA-Z\-:\* ]{1,20}([,|\n|\r][0-9a-zA-Z\-:\* ]{1,20})*

我是正则表达式世界的新手,你能帮我为此构建一个吗?

4

1 回答 1

0
  • 两边的字符串长度应该匹配
  • 两边的空格或连字符(仅允许)的位置也应该匹配。

你不能用正则表达式来做到这一点。考虑编写一个简单的状态机解析器来实现您的目标。这样也更易于维护。

于 2013-10-11T22:34:58.500 回答