正则表达式在第一个小数点后添加 0

发布于 2024-12-26 06:34:44 字数 210 浏览 2 评论 0原文

我目前正在学习正则表达式,但非常迫切需要这个。

我有一组值(10, 19.5, 13.99, 9.09)。除了第二个值之外,这些格式都很好。

我的问题是如何重写,使 19.5 变成 19.50 而不影响其他条目,即 (10, 19.50, 13.99, 9.09)

非常感谢大家。

I am currently learning regex but need this quite urgently.

I have a set of values (10, 19.5, 13.99, 9.09). These formats are fine except for the second value.

My problem is how to rewrite so that 19.5 becomes 19.50 without affecting the other entries i.e (10, 19.50, 13.99, 9.09)

Many thanks guys.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

唐婉 2025-01-02 06:34:44

如果这些是数字,请使用 toFixed()

如果这些是字符串,则可以使用

num="19.5"
num.replace(/^(\d+\.\d)$/,"$10");

If these are numbers, use toFixed()

If these are strings, you can use

num="19.5"
num.replace(/^(\d+\.\d)$/,"$10");
二智少女 2025-01-02 06:34:44

搜索:

(\.\d)(\D|$)

即点后跟一个数字,然后是非数字的内容(或字符串末尾)。

替换为:

$10$2

这是第一个捕获组,然后是“0”,然后是第二个捕获组。

var s = '10, 19.5, 13.99, 9.9';
s = s.replace(/(\.\d)(\D|$)/g, '$10$2');
// s == '10, 19.50, 13.99, 9.90'

Search for:

(\.\d)(\D|$)

That's dot followed by one number, then something that isn't a number (or end of string).

Replace with:

$10$2

That's the first capture group, then '0', then the second capture group.

var s = '10, 19.5, 13.99, 9.9';
s = s.replace(/(\.\d)(\D|$)/g, '$10$2');
// s == '10, 19.50, 13.99, 9.90'
柠檬 2025-01-02 06:34:44

例如,迭代每个值:

var value = '19.5';
value = value.replace(/^\d+[\.,]\d{1}$/, '
amp;0');

For example, iterating each value:

var value = '19.5';
value = value.replace(/^\d+[\.,]\d{1}$/, '
amp;0');
潜移默化 2025-01-02 06:34:44

如果您想使用 RegEx,您可以执行以下操作:

"10, 19.5, 13.99, 9.09".replace(/^\d+\.\d{1}$/g, function (full) {
    return full + "0";
});

这将返回 "10, 19.50, 13.99, 9.09"

If you wanted to use RegEx you could do something like:

"10, 19.5, 13.99, 9.09".replace(/^\d+\.\d{1}$/g, function (full) {
    return full + "0";
});

This would return "10, 19.50, 13.99, 9.09".

输什么也不输骨气 2025-01-02 06:34:44

试试这个

var array = [10, 19.5, 13.99, 9.09];
for(var i=0; i< array.length;i++){
    if(/[0-9].[0-9]{1}$/.test(array[i]))  array[i] = array[i]+'0';
}
alert(array);

OUTPUT : 

10, 19.50, 13.99, 9.09

小提琴: http://jsfiddle.net/M9hZx/

try this

var array = [10, 19.5, 13.99, 9.09];
for(var i=0; i< array.length;i++){
    if(/[0-9].[0-9]{1}$/.test(array[i]))  array[i] = array[i]+'0';
}
alert(array);

OUTPUT : 

10, 19.50, 13.99, 9.09

fiddle : http://jsfiddle.net/M9hZx/

喜爱纠缠 2025-01-02 06:34:44

编辑答案:

<script type="text/javascript">
var num = 19.9;
if(String(num).indexOf('.')>-1)
{
    num = num.toFixed(2);
}
alert(num);
</script>

直接的答案是使用“.toFixed(2)”,但我们验证它是否是小数,这样我们就不会得到像“10.00”这样的结果

对于进一步的格式化选项,您可以使用jquery插件numberformatter:

http://archive.plugins.jquery.com/project/numberformatter

这里是项目网页:

http://code.google.com/p/jquery-numberformatter/

此库的直接链接:

http://jquery-numberformatter.googlecode.com/files/jquery.numberformatter-1.2.2.jsmin.js

EDITED ANSWER:

<script type="text/javascript">
var num = 19.9;
if(String(num).indexOf('.')>-1)
{
    num = num.toFixed(2);
}
alert(num);
</script>

The straight answer is to use ".toFixed(2)", but we verify if it is a decimal so that we don't have results like "10.00"

For further formatting options you have the jquery plugin numberformatter:

http://archive.plugins.jquery.com/project/numberformatter

Here is the project webpage:

http://code.google.com/p/jquery-numberformatter/

The direct link for this library:

http://jquery-numberformatter.googlecode.com/files/jquery.numberformatter-1.2.2.jsmin.js

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文