这是我的代码:
function PlusMinus() {
str = str.replace(/([^\d\.](?!.*[^\d\.]))/, function(m, $1) {
if ($1 == "-") return "";
return $1 + "-";
});
}
而且它不起作用。
我想做的是找到最后一个出现的不是数字(0-9)或点(。)的字符,然后如果它是“-”,则将其删除(如果未替换)带有char +“-”的char。
就像计算器的-/ +按钮一样。
例子:
"" -> "-"
"-" -> ""
"abc2-3" -> "abc23"
"a2-" -> "a2"
"s23.3" -> "s-23.3"
"4f" -> "4f-"
是的,我已经看到了:JavaScript RegExp: Can I get the last matched index or search backwards/RightToLeft?,但是我无法使它用于括号中的字符
最佳答案
plusMinus(''); //'-'
plusMinus('-'); //''
plusMinus('abc2-3'); //'abc23'
plusMinus('a2-'); //'a2'
plusMinus('s23.3'); //s-23.3
function plusMinus(str) {
return str.replace(/(^|[^\d\.])(?=[\d\.]*$)/, function ($0) {
return $0 === '-'? '' : $0 + '-';
});
}
我只是不确定如何处理
33
之类的东西,因为现在它将返回-33
。这是期望的行为吗?