我试图编写一个正则表达式来解析数据库中的银行排序代码。 我需要正则表达式的原因是排序代码可能包含在句子中。 但是,它可能根本不是排序代码,因为人们有时会将数据输入数据库,将银行帐号和电话号码放入排序代码列。 我可以用
^[^0-9]*[0-9]{6}[^\d]*$
适用于
"blah123456blah"
但不是
"Emloyee 12's srt code : 123456"
我尝试过的任何其他内容都会让我匹配字符串中的6个或更多位数(这很可能是银行帐号)。
非常感谢任何帮助。
答案 0 :(得分:2)
你说你正在使用
[0-9]{2}\s*-?\s*[0-9]{2}\s*-?\s*[0-9]{2}
要添加您需要的边界,请添加(^|[^0-9])
(字符串起始位置(^
)或(|
)非数字([^0-9]
))在前面和([^0-9]|$)
(匹配一个非数字或字符串位置的末尾($
))在最后:
(^|[^0-9])[0-9]{2}\s*-?\s*[0-9]{2}\s*-?\s*[0-9]{2}([^0-9]|$)