从字母数字字符串中删除4到6位数字

时间:2015-04-16 15:43:34

标签: regex string coldfusion

在ColdFusion中,我尝试匹配并从字符串中删除4到6个连续数字。字符串看起来像这样:

ABC1234DEFGHABCDEF123456

该字符串限制为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进行格式化编辑。)

3 个答案:

答案 0 :(得分:4)

我认为这将完成这项工作:

(\A|[^0-9])([0-9]{4,6})([^0-9]|$)

它寻找4到6位数的序列,介于2个非数字字符或字符串分隔符(开头/结尾)之间。

答案 1 :(得分:3)

 ([^\d])[0-9]{4,6}([^\d])

这应该为你做。参见demo.Replace by \1\2

https://regex101.com/r/sJ9gM7/124

答案 2 :(得分:1)

您可以使用以下内容:

<cfset mystring = REReplace(mystring, "(\D)\d{4,6}(?=\D)" , "\1") />

Regex 101 Demo here.

正则表达式捕获一个非数字字符\D并将其放入捕获组1.然后搜索4到6位数字,后跟非数字字符。