有没有办法让正则表达式中的字符替换字符串有条件?

时间:2015-02-25 17:47:17

标签: regex

我想匹配五位邮政编码或九位邮政编码。我想在替换字符串中添加一个连字符,如果有九个数字,无论是否有一个开头。

我使用^(\d{5})-?(\d{4})?$进行搜索,$1-$2进行替换。

如果我从12345开始,我会回来12345-。我不想要尾随连字符。

有没有办法在替换字符串中指定只有在$ 2不为空时才显示连字符?

有没有办法在搜索字符串中插入连字符,即使没有开头的连字符,所以我可以将它从替换字符串中排除?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果我理解得很好,那似乎是一个错误的问题。

根据您的模式,五位数字原则上不能包含连字符,九位数字可能在第五位数后面有连字符。

因此,要为所有九位数字添加连字符,您只需要匹配没有连字符的九位数字,所有其他情况都可以忽略,不是吗?

搜索:^([0-9]{5})([0-9]{4})$

替换:$1-$2