繁体   English   中英

Javascript Regex:负面的背后隐藏

[英]Javascript Regex: negative lookbehind

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

“4 + .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 

试试这个正则表达式(\\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')); 

你可以用

s = s.replace(/\B\.\d/g, '0$&')

请参阅正则表达式演示

细节

  • \\B\\. - 匹配a . 也就是在字符串的开头或者没有字符char(字母,数字或_ )之前
  • \\d - 一个数字。

0$&替换字符串在整个匹配( $& )前面添加0

JS演示:

 var s = "4+1.5\\n4+.5"; console.log(s.replace(/\\B\\.\\d/g, '0$&')); 

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

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

模式将匹配

  • (^|\\D) - 组1(从替换模式引用$1 ):字符串( ^ )或任何非数字字符的开头
  • (\\.\\d) - 第2组(从替换模式中提到2 $2 ):a . 然后一个数字

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM