我有一个正则表达式,用于匹配我遇到的特定问题的前导 0
。
正则表达式所反对的文本通常是数学问题,如下所示:5 + 3
但是,这些都是生成的问题,有时它们会以 0
开头,例如:05 + 32
我知道解决这个问题的“正确”方法是修复传入的数据,但是我们在另一方面也试图做的是让获取这些数据的消费代码更难搞乱表达式,因此我们还想消除那里的前导 0
。
正则表达式如下:/([^\.\d]|^)[0]+/g
我有一个测试字符串,这应该违背:0000100001.23 + 009.00003 + 010005.00005
此正则表达式有效,但包含第二个和第三个数字及其各自的 +
符号之间的空格,如下所示:http://regexr.com/3dd2t
我知道它正在执行我所要求的操作 - 包括开头的任何非 .
或数字字符,或者前面没有非 0
字符,其中这种情况包括空格。如何修改此正则表达式以表明我不想包含前面的空格?
请注意,我不能使用负前向/后向,因为这将在 JavaScript 正则表达式引擎中工作,本质上是进入 string.replace
调用。
最佳答案
这可能不太理想,但由于 String.prototype.replace
可以将函数作为第二个参数,因此您可以使用嵌套的 replace
调用:第一个将获取整个数字(包括前导 0),第二个将删除 0。
var problem = "0000100001.23 + 009.00003 + 010005.00005";
var fixed = problem.replace(/[\.\d]+/g, function (item) {
return item.replace(/^0+/, '');
});
// or, shorter version:
var fixed2 = problem.replace(/[\.\d]+/g, item => item.replace(/^0+/, ''));
// Just for snippet output:
document.write(fixed);
document.write('<br />');
document.write(fixed2);
`
关于javascript - 如何排除此正则表达式中的空白匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37148085/