Java:替换第一个位置上除符号“+”之外的所有非数字符号

时间:2014-12-22 17:44:43

标签: java regex replaceall

我想在这样的规则上格式化输入的字符串:替换除字符串中第一个位置之外的所有非数字符号:它应该只是数字或符号'+'。

我使用正则表达式功能

private static final String REGEXP_NOT_DIGITS = "[^\\+0-9]";

String result = sample.replaceAll(REGEXP_NOT_DIGITS, "");

但是这个替换的结果是在任何位置都有数字和'+'符号的字符串。 请帮助我澄清一下我的条件是我会替换所有'+'符号,除了行中只有1个位置。

编辑。现在输出是:

  

sample [0] sample = 0123456789;结果= 0123456789预计:0123456789

     

样品[1]样品= + 380 + 380 + 380 +;结果= + 380 + 380 + 380 +预期:+380380380

     

样本[2]样本= dd0 11 22 33 44 55;结果= 01122334455预计:01122334455

     

样本[3]样本= + 380-456(789);结果= +380456789预期:+380456789

     

样本[4]样本= d3 + 580 456 789;结果= 3 + 580456789预期:3580456789

     

sample [5] sample = +380456789;结果= +380456789预期:+380456789

除了在字符串

中包含符号'+'外,一切正常

3 个答案:

答案 0 :(得分:5)

您可以使用:

String result = sample.replaceAll("(?!^)\\+|[^+\\d]+", "");

RegEx Demo

(?!^)\\+是一个负向前瞻,除了在行开头之外,它将匹配+

答案 1 :(得分:1)

你可以试试下面的正则表达式,

(?!^\\+)\\D

匹配除了+符号之外的任何非数字字符。

DEMO

String result = sample.replaceAll("(?!^\\+)\\D", "");

答案 2 :(得分:0)

这个怎么样:

"^[^\\d+]|\\D"