在 Javascript 中使用正则表达式来形成一个没有前导零的数字
Use Regex to form a number without leading zeros in Javascript
我在形成一个正则表达式时遇到了问题,该表达式可以从表示为字符串的数字中删除前导零。抱歉,parseFloat 不是我想要的,因为我将处理小数点后 30+ 位的数字。
我目前的正则表达式是
/(?!-)?(0+)/;
这是我的测试用例。http://jsfiddle.net/j9mxd/1/
$(function() {
var r = function(val){
var re = /(?!-)?(0+)/;
return val.toString().replace( re, '');
};
test("positive", function() {
equal( r("000.01"), "0.01" );
equal( r("00.1"), "0.1" );
equal( r("010.01"), "10.01" );
equal( r("0010"), "10" );
equal( r("0010.0"), "10.0" );
equal( r("10010.0"), "10010.0" );
});
test("negative", function() {
equal( r("-000.01"), "-0.01" );
equal( r("-00.1"), "-0.1" );
equal( r("-010.01"), "-10.01" );
equal( r("-0010"), "-10" );
equal( r("-0010.0"), "-10.0" );
equal( r("-10010.0"), "-10010.0" );
});
});
为什么我的测试用例没有通过?
这样就完成了你所有的情况
var re = /^(-)?0+(?='d)/;
return val.toString().replace( re, '$1');
^
字符串的开头匹配。
(-)?
匹配可选-
,这将重新插入到替换字符串中。
(0+)(?='d)
匹配一系列 0 和数字后面的数字。(?='d)
是一个前瞻断言,它不匹配,但确保数字跟随前导零。
这通过了您的测试,并且相对容易阅读:
var r = function(val){
var re = /^(-?)(0+)(0'.|[1-9])/;
return val.toString().replace( re, '$1$3');
};
您可以使用以下内容:
var r = function(val) {
var re = /(-)?0*('d.*)/;
var matches = val.toString().match(re);
return (matches[1] || '') + matches[2];
};
相关文章:
- 递增一个数字而不去掉前导零
- 制作一个regex来验证只有一个数字的字符串
- 如何使用至少一个数字、一个大写字母和6-20个字符验证密码
- 有没有办法在里面看到一个数字'的64位浮点IEEE754表示
- 我如何解析二's是一个数字的补码字符串
- 为什么我需要在这里输入var,为什么它会给我一个数字作为答案?(Javascript)
- 为什么 JavaScript 如果一个数字有一个前导零,就将其视为八进制
- 增加一个数字并将其附加到函数
- 如何让计算机猜测一个数字并返回猜测次数(Javascript)
- 正则表达式删除最后一个数字之后的字符串
- 用户在文本框中输入一个数字,并根据使用 PHP 输入的数字重定向到另一个网页
- 每次使用 Javascript 加载页面时增加一个数字(变量)的简单方法
- Javascript Regexp :如果一个字母与一个数字相邻,请添加下划线
- jQuery UI Slider ui.value 获取最后一个数字
- JavaScript 使用多少位来表示一个数字
- Javascript提示和警报输入一个数字,它将循环,您将输入数字以获得它的平均值
- RXJS 为什么只有最后一个数字同时有 a 和 b
- 检查字符串是否等于一个单词和一个数字
- 对负指数调用的.toFixed()返回一个数字,而不是字符串
- 脚本每天添加相同的数字,月底再添加一个数字