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

标签 java regex replaceall

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

我使用正则表达式功能

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

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

但是这个替换的结果是在任何位置都有数字和'+'符号的字符串。 请帮助我澄清我的条件,即我将替换行中除 1 个位置之外的所有“+”符号。

编辑。现在输出是:

sample[0] sample = 0123456789; result = 0123456789 expected:0123456789

sample[1] sample = +380+380+380+; result = +380+380+380+ expected:+380380380

sample[2] sample = dd0 11 22 33 44 55; result = 01122334455 expected:01122334455

sample[3] sample = +380-456(789); result = +380456789 expected:+380456789

sample[4] sample = d3+580 456 789; result = 3+580456789 expected:3580456789

sample[5] sample = +380456789; result = +380456789 expected:+380456789

一切正常,除了字符串中有符号“+”

最佳答案

您可以使用:

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

RegEx Demo

(?!^)\\+ 是一个否定前瞻,它将匹配 + 除了行首之外的任何地方。

关于Java:替换第一个位置上除符号 "+"之外的所有非数字符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27607759/

相关文章:

java - 如何在 Keycloak 中创建脚本映射器?

C++ 模板和字符串文字

Java RegEx 全部替换以格式化 XML 中的数据

java - 通过逗号模式匹配分割

java - For 循环 - HashMap 的第一个参数

java - 如何使用 runnable 将 java 命令模式迁移到 PHP 7.4?

java - 为什么 java String.split() 留下空字符串?

r - 如何使用gsub和regex来识别和删除连续的符号?

java - 从字符串中删除某些字符

Java ReplaceAll(..) 和正则表达式