求一正则表达式

Rogice 2009-12-30 06:35:58
匹配非负数,即可以是正整数或者正的小数,如果是小数的话最多精确到小数点后两位。
还有若是想调用stringObj.replace(rgExp, replaceText)方法,若不匹配则替换成空字符串,即replaceText='',
则前面的rgExp参数所对应的正则表达式怎么写
...全文
72 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
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);

87,914

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧