求一正则表达式

Rogice 2009-12-30 06:35:58
匹配非负数,即可以是正整数或者正的小数,如果是小数的话最多精确到小数点后两位。
还有若是想调用stringObj.replace(rgExp, replaceText)方法,若不匹配则替换成空字符串,即replaceText='',
则前面的rgExp参数所对应的正则表达式怎么写
...全文
69 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Rogice 2009-12-31
  • 打赏
  • 举报
回复
谢2位~~
浪尖赏花 2009-12-30
  • 打赏
  • 举报
回复
<script>
/*
* 匹配的话返回原来的字符串,不匹配返回""
*/
function func(str){
var re = /^(\d+(.\d{1,2})?)$|^.*$/;
str = str.replace(re,"$1");
return str;
}

alert(func("4214.4"));//4214.4
alert(func("4214.44"));//4214.44
alert(func("4214.444"));//空
alert(func("-4214.444"));//空
</script>
Inpool 2009-12-30
  • 打赏
  • 举报
回复
上面一个函数里忘了把teststr换成形参了。用这个吧;
var reg1=/^[^\-]\d+(\.\d{1,})?$/,reg2=/^\d+(?:\.\d{1,2})/;
var teststr = "12.343112434";
var result = cutNum(teststr);

function cutNum(numStr){
if(reg1.test(numStr)){
var regstr = "/" + numStr.replace(reg2,"") + "$/";
return numStr.replace(eval(regstr),"");
}else{
return "";
}
};
Inpool 2009-12-30
  • 打赏
  • 举报
回复
四舍五入精确做不到,只能截取:

var reg1=/^[^\-]\d+(\.\d{1,})?$/,reg2=/^\d+(?:\.\d{1,2})/;
var teststr = "12.343112434";
var result = (function cutNum(numStr){
if(reg1.test(teststr)){
var regstr = "/" + teststr.replace(reg2,"") + "$/";
return teststr.replace(eval(regstr),"");
}else{
return "";
}
})(teststr);
发帖
JavaScript

8.7w+

社区成员

Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
帖子事件
创建了帖子
2009-12-30 06:35
社区公告
暂无公告