如何编写适配双场景的正则表达式以提取目标CNPJ编号?
适配两种CNPJ提取场景的正则方案
核心思路
直接匹配CNPJ的两种合法格式比拆分字符串更精准,能同时覆盖你提到的两个场景。CNPJ主要有两种呈现形式:带格式的(含.、/、-)和纯数字的(14位)。
可用正则表达式
\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}|\d{14}
正则拆解
\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}:专门匹配带格式的CNPJ,比如22.111.539/0003-58|:逻辑或运算符,允许匹配两种格式中的任意一种\d{14}:匹配14位纯数字的CNPJ,比如02886427000164
场景验证
- 针对文本
TAX ID - CNPJ+22.111.539/0003-58, CONTACT NAME
匹配结果:22.111.539/0003-58,完全符合需求。 - 针对文本
CNPJ:02886427000164-CEP:04794-000**
匹配结果:02886427000164,精准提取目标内容。
关于原拆分方案的说明
你之前用的拆分正则[ +:,#]在第二个场景失效,是因为CNPJ后面的-不在你的分隔符列表里。但如果直接把-加入分隔符(变成[ +:,#-]),会把第一个场景中CNPJ本身的-当成分隔符,导致提取内容不完整。因此直接匹配CNPJ格式是更可靠的选择。
内容的提问来源于stack exchange,提问作者Snehasis Rout
相关产品推荐
相关产品推荐

