我有这个正则表达式模式
(\d?[a-z]*\d+[a-z]*-?\d*[a-z]*\d*)
和这个主题
new balance mrl420 grey - 是新的平衡运动鞋van New new voor heren。 De MRL420 serie van New ...
所以这匹配mrl420
但我想要的是它只会在整个匹配为7个字符或更多时返回匹配,所以在这种情况下它不应该匹配,但在这种情况下:
new balance mrl420grey - 是新的平衡运动鞋van New new voor heren。 De MRL420 serie van New ...
应该给出匹配。
我已尝试过,例如
(\d?[a-z]*\d+[a-z]*-?\d*[a-z]*\d*){7,} or (\d?[a-z]*\d+[a-z]*-?\d*[a-z]*\d*).{6,}
但这并没有提供正确的答案。似乎那7个字符的限制只适用于最后一个元素,在这种情况下是数字的数量?
那么如何得到我想要的结果呢?总结一下:
首先测试正则表达式模式匹配 如果它匹配则检查它是否有7个字符或更多。
当然,这可以分两个步骤完成,但也可以用一个表达式完成吗?
答案 0 :(得分:1)
您可以使用
\b(?=[a-z\d-]{7})\d?[a-z]*\d+[a-z]*-?\d*[a-z]*\d*
请参阅regex demo
<强>详情:
\b
- 字边界(?=[a-z\d-]{7})
- 在单词边界位置之后,必须有7个字符:字母,数字或-
(i
不区分大小写的修饰符可用于匹配上下 - 大写字母)\d?
- 1位或0位[a-z]*
- 0+个字母\d+
- 1+位数[a-z]*
- 零个或多个字母-?
- 一个可选的连字符\d*
- 0+位数[a-z]*
- 0+个字母\d*
- 0+位。