Java 需要正则表达式代码删除zipcode末尾的破折号,除非破折号后面有数字

Java 需要正则表达式代码删除zipcode末尾的破折号,除非破折号后面有数字,java,regex,Java,Regex,我有5位数的Zipcode,还有9位数的Zipcode,中间有一个破折号 问题是5位邮政编码的末尾有一个破折号,我只想在Zipcode不是9位Zipcode的情况下删除破折号 补充说明:我有以下格式的zipcodes:-和-。我想将其更改为和-您可以使用此正则表达式: if (postcode.length() == 6) postcode = postcode.substring(0,5); (?<=^[0-9]{5})(-)(?=$) 工作正则表达式示例: java

我有5位数的Zipcode,还有9位数的Zipcode,中间有一个破折号

问题是5位邮政编码的末尾有一个破折号,我只想在Zipcode不是9位Zipcode的情况下删除破折号


补充说明:我有以下格式的zipcodes:-和-。我想将其更改为和-

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

if (postcode.length() == 6)
        postcode = postcode.substring(0,5);
(?<=^[0-9]{5})(-)(?=$)
工作正则表达式示例:

java代码:

str = str.replaceAll("(?<=^[0-9]{5})(-)(?=$)", "");

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

(?<=^[0-9]{5})(-)(?=$)
工作正则表达式示例:

java代码:

str = str.replaceAll("(?<=^[0-9]{5})(-)(?=$)", "");

我要做的是:

if(zipcode.matches("\\d{5}-") //if zipcode is five digits (\d{5}) followed by a hyphen (-)...
{
    zipcode = zipcode.substring(0, zipcode.length() - 1); //...make zipcode equal itself minus the last character
}

我要做的是:

if(zipcode.matches("\\d{5}-") //if zipcode is five digits (\d{5}) followed by a hyphen (-)...
{
    zipcode = zipcode.substring(0, zipcode.length() - 1); //...make zipcode equal itself minus the last character
}
例如,09090-的匹配项为:

您可以用匹配项替换它

/^([0-9]{5})[\-][0-9]{4}$/   //skip replacement.
例如,09090-的匹配项为:

您可以用匹配项替换它

/^([0-9]{5})[\-][0-9]{4}$/   //skip replacement.

除了5位数字和破折号外,还有其他6个字符的邮政编码吗?如果不是,那么为什么不检查长度是否为6,最后一个字符是否为破折号,然后将其子串为5个字符?数据有时是错误的,并且会有6个数字,因为有人输入错误。我们有数据质量工具,如果我们删除最后一个数字,它将不会捕获坏数据,因此我想确保它是5个数字,然后是一个破折号。除了5个数字和破折号之外,还有其他6个字符的邮政编码吗?如果不是,那么为什么不检查长度是否为6,最后一个字符是否为破折号,然后将其子串为5个字符?数据有时是错误的,并且会有6个数字,因为有人输入错误。我们有数据质量工具,如果我们删除最后一个数字,它将不会捕获坏数据,因此我想确保它是5个数字,然后是一个破折号。你将我链接到一个很棒的网站,我不知道它的存在。非常感谢,它看起来非常有用。你把我链接到了一个很棒的网站,我不知道它的存在。非常感谢,它似乎非常有用。+1可以替换简单字符串操作时不需要使用正则表达式+1可以替换简单字符串操作时不需要使用正则表达式