在ColdFusion中,我尝试匹配并从字符串中删除4到6个连续数字。字符串看起来像这样:
ABC1234DEFGH
或ABCDEF123456
该字符串限制为20个字符,仅包含数字和字母。数字始终是连续的,可以出现在字符串的第一个字符之后的任何位置。只会出现一次连续数字。如果少于4位或大于6位数,我想保留它们。
所以,例如,如果我有这样的字符串:
ABC1234DEFGH
所需的结果为ABCDEFGH
。
对于这个字符串:
A123BCDEFGH
所需的结果为A123BCDEFGH
。
对于这个字符串:
ABCDE1234567FG
所需的结果是ABCDE1234567FG
。
我在这篇文章中尝试了这个建议:Regular expression for number with length of 4, 5 or 6但它并没有完全涵盖我的要求。
建议是:[0-9]{4,6}
此表达式将删除任何包含4到6位数的字符串,因此如果字符串有7位数字,则会删除其中的6位,但我想保留所有7位数字。我不知道如何创建一个正则表达式,它只匹配4,5或6个连续数字的字符串。
我将非常感谢任何和所有的帮助。 (感谢ifm进行格式化编辑。)
答案 0 :(得分:4)
我认为这将完成这项工作:
(\A|[^0-9])([0-9]{4,6})([^0-9]|$)
它寻找4到6位数的序列,介于2个非数字字符或字符串分隔符(开头/结尾)之间。
答案 1 :(得分:3)
答案 2 :(得分:1)
您可以使用以下内容:
<cfset mystring = REReplace(mystring, "(\D)\d{4,6}(?=\D)" , "\1") />
正则表达式捕获一个非数字字符\D
并将其放入捕获组1.然后搜索4到6位数字,后跟非数字字符。