javascript - 如何排除此正则表达式中的空白匹配?

标签 javascript regex

我有一个正则表达式,用于匹配我遇到的特定问题的前导 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/

相关文章:

javascript - PeerJS 对等端未接收数据

javascript - 未知问题(AJAX/GET)

javascript - IE 焦点后跳转到文本区域的开头

objective-c - 匹配在正则表达式中第二次找到某个单词

python - 在 Python 中检查字符串是否有字符

解析 HttpLog 格式的正则表达式模式

php - 谷歌地图 - 查找给定半径内的所有标记 Javascript/Php

javascript - Nightwatch.js 中是否有类似于 Mocha.js 的生成动态测试的方法?

java - 使用模式/匹配器提取子字符串

php - 数学字母数字符号的正则表达式