我有一个字符串,我想确保格式始终是+
后跟数字
以下方法可行:
String parsed = inputString.replaceAll("[^0-9]+", "");
if(inputString.charAt(0) == '+') {
result = "+" + parsed;
}
else {
result = parsed;
}
但是有没有办法让replaceAll
中的正则表达式保持+
(如果存在)在字符串的开头并替换第一行中的所有非数字?
答案 0 :(得分:1)
以下使用给定正则表达式的语句可以完成这项工作:
String result = inputString.replaceAll("(^\\+)|[^0-9]", "$1");
(^\\+) find either a plus sign at the beginning of string and put it to a group ($1),
| or
[^0-9] find a character which is not a number
$1 and replace it with nothing or the plus sign at the start of group ($1)
答案 1 :(得分:1)
您可以使用以下表达式:
String r = s.replaceAll("((?<!^)[^0-9]|^[^0-9+])", "");
当它不是字符串的初始字符(具有lookbehind的(?<!^)[^0-9]
部分)或任何不是数字或加号的字符时,想法是替换任何非数字。是字符串的初始字符(^[^0-9+]
部分)。
答案 2 :(得分:1)
答案 3 :(得分:0)
是的,你可以使用这种替代品:
String parsed = inputString.replaceAll("^[^0-9+]*(\\+)|[^0-9]+", "$1");
如果存在且在字符串中的第一个数字之前,则在组1中捕获+
字符。例如:dfd+sdfd12+sdf12
返回+1212
(第二个+
是因为它的位置在第一个数字之后被删除了。
答案 4 :(得分:0)
试试这个
1-这将允许负数和正数,并且将匹配app特殊字符,除了 - 和+在第一个位置。
(?!^[-+])[^0-9.]
2-如果你只想在第一个位置允许+
(?!^[+])[^0-9.]