【发布时间】:2020-05-08 18:00:53
【问题描述】:
您好,我正在尝试用正则表达式读取增值税号,前面是国家代码:
GB 009 0009 09
他们可以这样格式化
GB009000909
GB 009000909
GB 0 09 0009 09
我现在的表达是:(GB\d{9}\b|GB\s{1}\d{9}\b)
如何保持简单并忽略空格?
【问题讨论】:
标签: regex
您好,我正在尝试用正则表达式读取增值税号,前面是国家代码:
GB 009 0009 09
他们可以这样格式化
GB009000909
GB 009000909
GB 0 09 0009 09
我现在的表达是:(GB\d{9}\b|GB\s{1}\d{9}\b)
如何保持简单并忽略空格?
【问题讨论】:
标签: regex
你可以使用GB(\s?\d){9}
GB 与字符 GB 字面匹配(区分大小写)
第一抓捕组(\s?\d){9}
{9} 量词——精确匹配 9 次
重复捕获组将仅捕获最后一次迭代。如果您对数据不感兴趣,请在重复组周围放置一个捕获组以捕获所有迭代或使用非捕获组
\s? 匹配任何空白字符(等于[\r\n\t\f\v ])
? 量词 - 匹配 0 到 1 次,尽可能多次,按需回馈(贪婪)
\d 匹配一个数字(等于[0-9])
【讨论】:
[ ]* 将匹配任意数量的空格(包括0)。 ([0-9]+) 模式将匹配 1 个或多个数字。 ([0-9]*) 模式可以是任意位数(包括 0)。我认为这样的东西可以匹配你的一切:
GB[ ]*([0-9]+)[ ]*([0-9]*)[ ]*([0-9]*)[ ]*([0-9]*)
每次都匹配 GB。然后是 0 个或多个空格,然后是至少 1 个数字,如果出现 0 个或多个,则空格然后数字最多 4 次。
如果需要更多解释,请告诉我!
【讨论】: