我试图在公式中替换所有错过前一个零的浮点数。例如:
" 4 + 0.5"应该成为:" 4 + 0.5"
现在我读了看JavaScript后面不支持,所以我怎么能实现呢?当前面有数字时,以下代码也会替换:
var regex = /(\.\d*)/,
formula1 = '4+1.5',
formula2 = '4+.5';
console.log(formula1.replace(regex, '0$1')); //4+10.5
console.log(formula2.replace(regex, '0$1')); //4+0.5

答案 0 :(得分:2)
试试这个正则表达式(\D)(\.\d*)
var regex = /(\D)(\.\d*)/,
formula1 = '4+1.5',
formula2 = '4+.5';
console.log(formula1.replace(regex, '$10$2'));
console.log(formula2.replace(regex, '$10$2'));

答案 1 :(得分:1)
您可以使用
s = s.replace(/\B\.\d/g, '0$&')
请参阅regex demo。
<强>详情
\B\.
- 匹配位于字符串开头的.
或不带字char(字母,数字或_
)\d
0$&
- 数字。 0
替换字符串正在整个匹配($&
)前面添加var s = "4+1.5\n4+.5";
console.log(s.replace(/\B\.\d/g, '0$&'));
。
JS演示:
var s = ".4+1.5\n4+.5";
console.log(s.replace(/(^|\D)(\.\d)/g, '$10$2'));
&#13;
另一个想法是使用一个交替组,它匹配字符串的开头或非数字字符,捕获它然后使用反向引用:
(^|\D)
&#13;
模式匹配
$1
- 第1组(替换模式中引用^
):字符串开头((\.\d)
)或任何非数字字符$2
- 第2组(在替换模式中称为.
):a public Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
}
然后是数字