使用正则表达式验证字符串

时间:2013-10-11 21:38:33

标签: regex

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

  1. 除了字母数字值,只允许令牌为逗号,冒号,空格和连字符
  2. 如果我们在子字符串中有冒号(:):
    • 两边的字符串长度应匹配。
    • 两侧的空格或连字符(仅限允许的位置)也应匹配。
    • 双方的字符串不能以 - 或空格开头/结尾。
  3. 以下是有效字符串的示例:

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

    有效的:

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

    残疾人是:

    • 100A *瓦特
    • 100-10:10-10
    • sep 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})*
    

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

1 个答案:

答案 0 :(得分:0)

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

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