js 怎样用js正则 数字和小数点去掉小数点后面多于的0

&& 昨天跟同事一起检查IE下的JS错误,搞了几个小时,考虑了很多种可能,最后偶然发现问题的根源在于ContactList.js载入了ContactDisplay.js,而ContactDisplay.js中在postCreate函数里有这样一段代码
dojo.create("img", {
&& src: "/html/themes/classic/images/contacts_pending.png",
}, this.pendingImg);
其中作为第二个参数的对象中多了一个逗号。
&&& 这样的问题其实并不少见,对于比较简单的代码,比如:
var tt={
&& name:"test",
&& ff:"fdff”,
};
&& Eclipse的JavaScript Editor会给出错误提示”Syntax error on token ",", LiteralField expected after this token”;当代码比较复杂,嵌套层次比较多时,如前面ContactDisplay.js中的情况,Eclipse的JavaScript Editor就没有给出提示。
&&& 好在Eclipse中有用正则表达式进行搜索的功能,今天上午研究了一下,写了正则表达式来定位JS代码中尾部有多余逗号的对象。
&&& 先介绍几个匹配注释的正则表达式:
用于匹配JS中的行注释: //[^\n]*\n
用于匹配JS中的块注释: /\*(.|\n)*?\*/
用于匹配JS中的任意注释: (//[^\n]*\n)|(/\*(.|\n)*?\*/)
&&&& 要匹配JS中尾部有多余逗号的对象,可用正则表达式:
&&&&&&&&& ,((\s*)|(//[^\n]*\n)|(/\*(.|\n)*?\*/))*}&&&&&
其中考虑了’,’和’}’之间有空白字符、行注释和块注释的情况。在Eclipse中用上面的正则表达式对较小的文件进行搜索是可以的,但对较长的文件搜索时,可能会报告"Find pattern too complex",非常郁闷。
&&& 下面是几种稍微简单的情况,
只考虑,和}之间有空白字符的情况: ,\s*}
只考虑,和}之间有空白字符和行注释的情况: ,((\s*)|(//[^\n]*\n))*}
只考虑,和}之间有空白字符和块注释的情况: ,((\s*)|(/\*(.|\n)*?\*/))*}
&&& 一种可行的解决方法是:先把JS中的块注释清除(用正则表达式替换功能将/\*(.|\n)*?\*/替换为空),然后只考虑,和}之间有空白字符和行注释的情况,即用 ,((\s*)|(//[^\n]*\n))*}& 进行查找。
&&& 对于有些JS在FF中正常运行,在IE下有错误的情况,如果JS文件比较长,用肉眼找起来很费事,并且怀疑是哪个对象多了个逗号的缘故,不妨在Eclipse打开源文件,用上面的方法搜搜看,也许能有意外发现哦。
浏览: 213197 次
来自: 上海
不错,学习了。
http://blog.csdn.net/huang_xw/a ...
理解了,我还以为是同时支持的连接数呢
楼主可以去看看一个jvm的连载,公众号 ITmenghuo
不同操作系统会有些差异,window XP下是的,linux
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
比如3----3.003.1----3.103.123----&3.12怎么写?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
不用正则,直接用toFixed(n)就可以了,n表示保留几位小数,不足的补0,太多的就四舍五入。
var a=3, b=3.1, c=3.123;
console.log(a.toFixed(2)); // 3.00
console.log(b.toFixed(2)); // 3.10
console.log(c.toFixed(2)); // 3.12
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
正则的话,下面的可以参考下:
function a(numb) {
let numb_str = numb.toString()
return numb_str.indexOf('.') & 0 ? numb_str.replace(/\.\d*/i, (xiaoshu) =& {return (xiaoshu.length === 2 ? xiaoshu + '0' : xiaoshu.slice(0, 3))}) : numb_str + '.00'
自己可以再扩展下,比如 numb 参数是不是 Number 型之类的
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
判断只能输入 大于0的整数或小数 正则表达式 怎么写?如题
作业帮用户
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
/^\d+(\.\d+)?$/\d+ 可匹配任意整数,没过于严格,像01,000123也会被匹配括号中的,可以匹配点加任意整数,就成了小数了,括号后面的问号表达括号中的内容可有可无如果不让匹配01,000123,就这样:/^(\d|[1-9]\d+)(\.\d+)?$/(\d|[1-9]\d+),在这里\d匹配0-9,而后[1-9]\d+匹配任意非0开头的整数
为您推荐:
其他类似问题
扫描下载二维码在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
想用replace替换掉小数点后面多于的0.
例如: 12.000700 ——————& 12.0007
注意:若是没有小数点的话,匹配不生效,不替换任何字符。
[补充内容]
感谢各位老哥的回答。但是可能我对问题的描述不够全面。
1.(不希望转为数字)我的整个数值计算是字符串按位计算的,所以我并不希望将他转为数字,而是通过正则的方式去掉多余的0。不愿意转换也有一点是String/Number等方法对小数点后面的位数有限制。
2.(需要考虑没有小数点的情况)/0*$/或者/0+$/这种单纯的匹配末尾是不全面的。可能有没有小数点的存在。
并不希望: 12000 ——————& 12
这明显改变了数值
3.(目前想到的方法)目前的能想到的用了两个replace一个match。先匹配到小数点右面的字符。再将该字符去末尾0替换到小数点右面。显然不高级,有没有更优雅的写法。
var str = "12.000700";
var _tmp = str.match(/\.\d+0+/)[0].replace(/0+$/,'');
console.log(str.replace(/\.\d+0+/, _tmp));
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
Number("12.000700").toString()
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
const arr=['','','1200.','1200','','0.','0.']
const regexp=/(?:\.0*|(\.\d+?)0+)$/
arr.forEach((item)=&{
console.log(item.replace(regexp,'$1'))
// & 1200.1
// & 0.12001
再解释下正则的意思(?:\.0*|(\.\d+?)0+)$
先分解成4部分
(?:reg1|reg2) - 它是一个正则分组非捕获组,要么匹配reg1,要么匹配reg2,优先匹配reg1,加上?:不对捕获组记录
\.0* - 表示匹配一个.开头,后边跟着0或0个以上数量的0,且不进行捕获,所以在填充$1时,就是个空值
(\.\d+?)0+ - 它是一个捕获组,匹配一个.开头后边跟着非贪婪(懒惰)匹配任意数字,接着在末尾尽可能多的匹配0这个字符,匹配完成后,生成一个捕获组内容
$ - 表示匹配结果需要以0作为结尾
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。15:23 提问
跪求 js正则表达式
小于等于0大于等于1000 并且保留两位小数
js正则表达式
小于等于0大于等于1000 并且保留两位小数
按赞数排序
这就叫没事找事儿做了。好好的一个 if(x&=0||x&=1000) 判断,非要那么复杂作甚?保留两位就x.toFixed(2);
^(0(?!.0{1,2}$)(.[0-9]{1,2})?|[1-9][0-9]{0,2}(.[0-9]{1,2})?)$
var reg = ^(?:0.\d{1,2}|[1-9]\d{0,2}(?:.\d{1,2})?|1000)$;
var reg=/^\d.([1-9]{1,2}|[0-9][1-9])$|^[1-9]\d{0,1}(.\d{1,2}){0,1}$|^100(.0{1,2}){0,1}$/
(-([0-9]*(.[0-9]{1,2})?)|[1-9][0-9]{3,}(.[0-9]{1,2})?)
var reg = r'^0.0*$|^-\d+.?\d*|^[1-9]\d{3,}.?\d*$' ;
我的使用python写的,但是规则都是一样的
(值&0&&值《100)
var reg = r'^0.?0*$|^-\d+.?\d*|^[1-9]\d{3,}.?\d*$' ;
上面的少匹配0了,这次都可以匹配, 第一部分匹配0或0.00... ,第二部分匹配小于0的所有数,第三部分匹配大于1000的所有数
var r = /^([0-9]{1,3}(\.\d{2})?|1000(\.[0]{2})?)$/
/(-([0-9]*(.[0-9]{1,2})?)|[1-9][0-9]{3,}(.[0-9]{1,2})?)|0/
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐}

我要回帖

更多关于 js 正则小数点最多1位 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信