Javascript Regex:负面的背后隐藏

时间:2017-12-15 20:21:34

标签: javascript regex

我试图在公式中替换所有错过前一个零的浮点数。例如:

" 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




2 个答案:

答案 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演示:

&#13;
&#13;
var s = ".4+1.5\n4+.5";
console.log(s.replace(/(^|\D)(\.\d)/g, '$10$2'));
&#13;
&#13;
&#13;

另一个想法是使用一个交替组,它匹配字符串的开头或非数字字符,捕获它然后使用反向引用:

&#13;
&#13;
(^|\D)
&#13;
&#13;
&#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); } 然后是数字