Ale*_*alo 2 java regex replaceall
我想在这样的规则上格式化输入的字符串:替换除字符串中第一个位置之外的所有非数字符号:它应该只是数字或符号'+'.
我使用正则表达式功能
private static final String REGEXP_NOT_DIGITS = "[^\\+0-9]";
String result = sample.replaceAll(REGEXP_NOT_DIGITS, "");
Run Code Online (Sandbox Code Playgroud)
但是这个替换的结果是带有数字的字符串和任何位置的"+"符号.请帮助我澄清我的条件,我将替换所有'+'符号,除了行中只有1个位置.
编辑.现在的输出是:
sample [0] sample = 0123456789; 结果= 0123456789预计:0123456789
样品[1]样品= + 380 + 380 + 380 +; 结果= + 380 + 380 + 380 +预期:+380380380
样本[2]样本= dd0 11 22 33 44 55; 结果= 01122334455预计:01122334455
sample [3] sample = + 380-456(789); 结果= +380456789预期:+380456789
样本[4]样本= d3 + 580 456 789; 结果= 3 + 580456789预计:3580456789
sample [5] sample = +380456789; 结果= +380456789预期:+380456789
一切都好,除了在字符串中有符号'+'
您可以使用:
String result = sample.replaceAll("(?!^)\\+|[^+\\d]+", "");
Run Code Online (Sandbox Code Playgroud)
(?!^)\\+是一个负面的前瞻,+除了在行开始之外,它将匹配所有地方.