python - 正则表达式的字符串是带有最小长度为 6 的数字的大写字母,以及带有最小长度为 6 的数字和连字符且只有数字的大写字母
问题描述
目前我有这个正则表达式:
(?:\d+[A-Z]|[A-Z]+\d)[A-Z-\d]{6,}|[0-A9-Z]{6,}|[0-9]{6,}
我希望这个正则表达式匹配段落中的任何“字符串”:
带数字和最小长度 6 的大写字母
带有连字符和最小长度 6 的数字的大写字母
只有最小长度为 6 的数字。
上面的这个正则表达式有效,但是它仍然只匹配字母,我想如何排除这个?
A1A1A1A1A1A1A1A1 --> should match
12222222222222DE --> should match
'PRODUKT', 'PRODUKT', 'NICKNAME', 'PRODUKTNAME' --> shouldn't match any of this but its matching
123456 --> should match
6203-5458 --> shouldn't match
234SS-4NNNAA --> should match
解决方案
您可以使用
(?<![\dA-Z-])(?=[\dA-Z-]{6,})(?:[\d-]+[A-Z]|[A-Z-]+\d)[A-Z\d-]*|[0-9]{6,}
请参阅正则表达式演示。详情:
(?<![\dA-Z-])
- 紧靠左边,不应有数字、大写字母或-
(?=[\dA-Z-]{6,})
- 紧靠右边,必须有 6 个或更多数字、大写字母或-
(?:[\d-]+[A-Z]|[A-Z-]+\d)[A-Z\d-]*
- 一个或多个数字或-
然后是一个大写字母或一个或多个大写字母或连字符,然后是一个数字,然后是零个或多个大写字母、数字或连字符|
- 或者[0-9]{6,}
- 六位数或更多位数。
推荐阅读
- javascript - 使用 selenium 的 javascript 自动化
- react-native - React 原生自定义日历列表
- firebase - Firebase authentification without login
- javascript - 如何在 HTML 中制作可编辑的段落?
- oracle - 解析csv文件并将内容作为sql plus中的clob对象放入表中
- javascript - 用 JavaScript 隐藏 HTML 中的类?
- hibernate - 如何使用网络存储多对多映射休眠
- botframework - 当我们在 spfx bot 扩展中使用 Adaptivecards Fabric UI 时无法提供输入
- directx-11 - 阴影贴图将未应用阴影贴图的风景放入阴影中
- python - ModuleNotFoundErrorDer 是做什么的