黑马程序员技术交流社区

标题: 正则表达式实现千分位求详解 [打印本页]

作者: 高宜    时间: 2012-6-22 09:42
标题: 正则表达式实现千分位求详解
本帖最后由 高宜 于 2012-6-22 09:43 编辑

function commafy(n){
var re=/\d{1,3}(?=(\d{3})+$)/g;
var nl=n.replace(/^(\d+)((\.\d+)?)$/,function(s,s1,s2){return   s1.replace(re,"$&,")+s2;});
return n1;
}
其中/正则表达式.../g后面的这个g是什么意思?
之后n.replace中匿名函数没看懂意思?
作者: 张恒维    时间: 2012-6-22 10:06
/g表示替换将针对行中每个匹配的串进行,否则则只替换行中第一个匹配串。
给你个更直观的
  1. function MyReplace(n)
  2. {
  3.         re=/(\d{1,3})(?=(\d{3})+(?:$|\.))/g
  4.         n1=n.replace(re,"$1,")
  5.         document.write(n+"<br/>"+n1)
  6. }
复制代码

作者: 鲍云龙    时间: 2012-6-22 12:46
匿名函数的意思:
第一个参数是要匹配的参数,即s=n;第二个参数是(\d+)匹配的值,即s1 便是/^(\d+)((\.\d+)?)$/正则中的$1,第三个参数s2为((\.\d+)?)为/^(\d+)((\.\d+)?)$/正则中的$2;



作者: 黑马杨凯    时间: 2012-6-23 22:37
顶一下!通过调试每一部分的结果,都能得到,可以判断出他们的用途,但是此处的匿名函数为什么可以这么用?为什么匿名函数能拿到s,s1,s2?
希望高手能详细说明




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2