正则表达式扩展需求:匹配含可选INV/PL后缀的目标格式
正则表达式扩展:支持末尾可选的INV/PL标记
问题背景
现有正则表达式:
\b\d{6}-\d(?:[0-9]|[A-Za-z](?![A-Za-z]))?(?:[A-Za-z]{1,2})?\b
可匹配111123-1这类格式,现在需要扩展它,使其支持匹配末尾带有**可选空格加'INV'或'PL'**的格式(例如111123-1 INV)。用户尝试的写法\b\d{6}-\d(?:[INV][PL][A-Za-z0-9])?\b无效,需要正确的正则写法。
正确解决方案
最终正则表达式
\b\d{6}-\d(?:[0-9]|[A-Za-z](?![A-Za-z]))?(?:[A-Za-z]{1,2})?(?:\s(?:INV|PL))?\b
修改说明
- 核心是在原有正则末尾添加了
(?:\s(?:INV|PL))?这个可选非捕获组:\s:匹配单个空格(如果要支持多个空格,替换为\s+即可)(?:INV|PL):精确匹配INV或PL这两个固定标识,非捕获组避免额外分组开销?:让整个空格加标识的部分变为可选,不影响原有格式的匹配逻辑
可匹配的示例格式
- 原有格式:
111123-1、111123-1X、111123-1YZ - 新增格式:
111123-1 INV、111123-1YZ PL
内容的提问来源于stack exchange,提问作者Jacek
相关产品推荐
相关产品推荐

