1

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

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

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

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

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

4

3 回答 3

1

到目前为止您的情况摘要:

  1. 至少需要 1 个数字 [0-9]
  2. 至少需要 4 个符号 {4,}
  3. 可以有字符 [a-zA-Z]
  4. 可以有短破折号 [-]

以下正则表达式满足所有要求:

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

注意:符号表示整个输入字符串都已验证^$如果不是这种情况,请更改此设置。

于 2013-10-03T14:23:34.353 回答
0

它无法匹配... EM24A1BF 包含 EM,它们是 2 [az],而不是 1,如您的正则表达式所述。像这样的东西

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

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

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

为确保您的字符串满足您的要求(字符的位置和组成以及长度要求),您需要使用非消耗正则表达式

于 2013-10-03T13:34:11.300 回答
0

看一下这个

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

它匹配以下

32ES5200G
LE32K900
N55XT770XWAU3D
于 2013-10-09T14:35:42.927 回答