限制包含至少1位数,0个或更多字符和可选短划线的字符串长度

时间:2013-10-03 13:31:03

标签: regex

我正在尝试为消费者产品模型制作正则表达式。

我有这个正则表达式:([a-z]*-?[0-9]+-?[a-z]*-?){4,}

我希望将整个特殊字符串限制为4或更多,但会发生的情况是限制仅适用于数字。

所以这个示例匹配:E1912H虽然不匹配:EM24A1BF虽然两者都匹配。

你能告诉我我做错了什么,或者如何限制整个特殊字符串而不仅仅是数字?
限制:
1-字符串包含至少1位数字
2-字符串可以包含字符
3-字符串可以包含“ - ”
4-最小长度= 4

3 个答案:

答案 0 :(得分:1)

到目前为止您的条件摘要:

  1. 至少需要1位[0-9]
  2. 需要至少4个符号{4,}
  3. 可以包含字符[a-zA-Z]
  4. 可以短划线[ - ]
  5. 以下正则表达式满足所有要求:

    ^(?=.*\d)([A-Za-z0-9-]+){4,}$
    

    注意^$符号表示验证整个输入字符串。如果情况并非如此,请改变这一点。

答案 1 :(得分:0)

它无法匹配...... EM24A1BF包含EM,它们是2 [a-z],而不是1作为你的正则表达式状态。 像这样的东西

[a-z]*-?\d+-?[a-z]*-?\d*[a-z]+

匹配你的表达式和所有这些:

  • E1912H
  • EM24A1BF
  • eM24A1BF
  • eM-24A-1BF
  • eM-24A-
  • eM24A-1BF
  • EM-24A1BF

为确保您的字符串符合您的要求(字符的位置和构图以及长度要求),您需要使用non-consuming regular expression

答案 2 :(得分:0)

检查出来

 ([\w-]*\d+[\w-]*){4,}

它匹配以下

32ES5200G
LE32K900
N55XT770XWAU3D