首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >IBAN掩模的正则表达式

IBAN掩模的正则表达式
EN

Stack Overflow用户
提问于 2019-03-17 10:42:16
回答 4查看 2.5K关注 0票数 2

我试图从字符串中提取这个文本"NL d ABNA ddddddddd“:

代码语言:javascript
运行
AI代码解释
复制
IBAN NL 91ABNA0417463300
IBAN NL91ABNA0417164300
Iban: NL 69 ABNA 402032566

该字符串可能有三种或更多的变体。

然而,我只谈到这一点:

代码语言:javascript
运行
AI代码解释
复制
NL\s?\d{2}\s?[A-Z]{4}0\s?\d{9}$

它与前两个示例相匹配,但与第三个示例不匹配。

见:https://regex101.com/r/zGDXa2/1

我该怎么治疗呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-03-18 05:27:38

您可以使用以下正则表达式:

代码语言:javascript
运行
AI代码解释
复制
(?i)(?:(?<=IBAN(?:[:\s]\s|\s[:\s]))NL\s?\d{2}\s?[A-Z]{4}[0 ]\s?\d{9,10})|(?:(?<=IBAN[:\s])NL\s?\d{2}\s?[A-Z]{4}[0 ]\s?\d{9,10})

演示:

https://regex101.com/r/zGDXa2/11

如果您在python中工作,您可以删除(?:i)并将其替换为标志re.Ire.IGNORECASE

在:上测试

代码语言:javascript
运行
AI代码解释
复制
Uw BTW nummer NL80
 IBAN NL 11abna0317164300asdfasf234
iBAN NL21ABNA0417134300 22
Iban: NL 29 ABNA 401422366f sdf
IBAN :NL 39 ABNA 0822416395s
IBAN:NL 39 ABNA 0822416395s

提取物:

代码语言:javascript
运行
AI代码解释
复制
NL 11abna0317164300
NL21ABNA0417134300
NL 29 ABNA 401422366
NL 39 ABNA 0822416395
NL 39 ABNA 0822416395
票数 1
EN

Stack Overflow用户

发布于 2019-03-17 10:57:35

regex101演示中的问题是,在$之后,正则表达式中有一个额外的字符,所以删除它并将0更改为[0 ],这修复了所有这些,并开始匹配您的第三行。正确的准则变成,

代码语言:javascript
运行
AI代码解释
复制
NL\s?\d{2}\s?[A-Z]{4}[0 ]\s?\d{9}$

检查您更新的演示

票数 3
EN

Stack Overflow用户

发布于 2019-03-17 10:53:49

您只需删除所有空格和大写其余部分,如下所示:

代码语言:javascript
运行
AI代码解释
复制
iban = NL 91ABNA0417463300
iban.replace(" ", "")
iban.upper()

然后你的判断力是:

代码语言:javascript
运行
AI代码解释
复制
NL\d{2}ABNA(\d{10}|\d{9})

它在https://regex101.com/r/zGDXa2/1中工作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55210627

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文