当前位置: 首页 > news >正文

做网站需要参考书目书做网站的图片大全

做网站需要参考书目书,做网站的图片大全,迅速让一个wordpress,利用微博网站做淘客一、千位分隔符案例#xff08;一#xff09; 逆序环视和顺序环视结合应用。 **需求#xff1a;**数字格式化成用 , 分隔的货币格式。 正则表达式#xff1a;(?n)(?\d)(?!\.\d*)(?(\d{3})(\.|$)) 测试代码#xff1a; double[] data new double[] { 0,…一、千位分隔符案例一 逆序环视和顺序环视结合应用。 **需求**数字格式化成用 , 分隔的货币格式。 正则表达式(?n)(?\d)(?!\.\d*)(?(\d{3})(\.|$)) 测试代码 double[] data new double[] { 0, 12, 123, 1234, 12345, 123456, 1234567, 123456789, 1234567890, 12.345, 123.456, 1234.56, 12345.6789, 123456.789, 1234567.89, 12345678.9 };foreach (double d in data) {richTextBox2.Text 源字符串 d.ToString().PadRight(15) 格式化 Regex.Replace(d.ToString(), (?n)(?\d)(?!\.\d*)(?(\d{3})(\.|$)), ,) \n; }输出结果 源字符串0 格式化0源字符串12 格式化12源字符串123 格式化123源字符串1234 格式化1,234源字符串12345 格式化12,345源字符串123456 格式化123,456源字符串1234567 格式化1,234,567源字符串123456789 格式化123,456,789源字符串1234567890 格式化1,234,567,890源字符串12.345 格式化12.345源字符串123.456 格式化123.456源字符串1234.56 格式化1,234.56源字符串12345.6789 格式化12,345.6789源字符串123456.789 格式化123,456.789源字符串1234567.89 格式化1,234,567.89源字符串12345678.9 格式化12,345,678.9实现分析 首先根据需求可以确定是把一些特定的位置替换为 ,接下来就是分析并找到这些位置的规律并抽象出来以正则表达式来表示。 这个位置的左侧必须为数字 这个位置右侧到出现 . 或结尾为止必须是数字且数字的个数必须为 3 的倍数 这个位置左侧相隔任意个数字不能出现 . 由以上三条就可以完全确定这些位置只要实现以上三条组合一下正则表达式就可以了。 根据分析最终匹配的结果是一个位置所以所有子表达式都要求是零宽度。 是对当前所在位置左侧附加的条件所以要用到逆序环视因为要求必须出现所以是肯定的符合这一条件的子表达式即为 (?\d) 是对当前所在位置右侧附加的条件所以要用到顺序环视也是要求出现所以是肯定的是数字且个数为3的倍数即 (?(\d{3}))到出现 . 或结尾为止即 (?(\d{3})(\.|$)) 是对当前所在位置左侧附加的条件所以要用到逆序环视因为要求不能出现所以是否定的即 (?!\.\d*) 因为零宽度的子表达式是非互斥的最后匹配的都是同一个位置所以先后顺序是不影响最后的匹配结果的可以任意组合只是习惯上把逆序环视写在左侧顺序环视写在右侧。 说明这里只是为了说明环视的使用而举的一个例子实际上这个需求直接用 string.Format 就可以做到。 二、千位分隔符案例二 千位分隔符顾名思义就是数字每隔三位添加一个逗号。这是参考西方的习惯在数字之中加入一个符号避免因数字太长难以直观的看出它的值。 那么怎么将一串数字转化为千位分隔符形式呢? var str 1234567890.9876; console.log((str).toLocaleString()); // 1,234,567,890.988如上toLocaleString() 返回当前对象的“本地化”字符串形式。 如果该对象是 Number 类型那么将返回该数值的按照特定符号分割的字符串形式如果该对象是 Array 类型那么先将数组中的每项转化为字符串然后将这些字符串以指定分隔符连接起来并返回。 我们尝试使用环视来处理下 var str 1234567890; function thousand(str){return str.replace(/(?!^)(?([0-9]{3})$)/g,,); // 进行了好多次迭代匹配匹配到 3 个位置把匹配到的位置替换成逗号 } console.log(thousand(str));//1,234,567,890 console.log(thousand(123456));//123,456 console.log(thousand(1234567879876543210));//1,234,567,879,876,543,210上述使用到的正则表达式分为两块 (?!^) 和 (?([0-9]{3})$)。我们先来看后面的部分然后逐步分析之。 [0-9]{3} 表示连续3位数字([0-9]{3}) 表示连续3位数字至少出现一次或更多次([0-9]{3})$ 直到字符串末尾那么 (?([0-9]{3})$) 就表示匹配一个零宽度的位置并且从这个位置到字符串末尾中间拥有至少 1 组以3个数字为 1 组的数字即 3 的正整数倍得到数值为数字的个数就是 3 乘以 13 乘以 2以此得到的乘积为个数的数字正则表达式使用全局匹配 g表示匹配到一个位置后它会继续匹配直至匹配不到将这个位置替换为逗号实际上就是每 3 位数字添加一个逗号当然对于字符串 123456 这种刚好拥有 3 的正整数倍个数的数字当然不能在1前面添加逗号那么使用 (?!^) 就指定了这个替换的位置不能为起始位置。 三、顺序肯定环视 假如现在js 通过 ajax 获取到一段 html 代码如下 var responseText div datadev.xxx.txt/divimg srcdev.xxx.png/;现我们需要替换 img 标签的 src 属性中的 dev 字符串为 test 字符串。 由于上述 responseText 字符串中包含至少两个子字符串 dev显然不能直接 replace 字符串 dev 为 test 同时由于 js 中不支持逆序环视我们也不能在正则中判断前缀为 src然后再替换 dev 我们注意到 img 标签的 src 属性以 .png 结尾基于此就可以使用顺序肯定环视。 var reg /dev(?[^]*png)/; //为了防止匹配到第一个dev, 通配符前面需要排除单引号或者是尖括号 var str responseText.replace(reg,test); console.log(str);//div datadev.xxx/divimg srctest.xxx.png /当然以上不止顺序肯定环视一种解法捕获性分组同样可以做到。那么环视高级在哪里呢环视高级的地方就在于它通过一次捕获就可以定位到一个位置对于复杂的文本替换场景常有奇效而分组则需要更多的操作。
http://wiki.neutronadmin.com/news/320458/

相关文章:

  • 中牟网站建设思明区建设局网站
  • 网站开发交接表昆山做网站怎么做
  • 求个网站2020急急急知名网站名称
  • 微信公众平台网站开发html5手机企业网站模板
  • 衡阳市住房和城乡建设部网站做动图素材网站
  • 域名验证网站wordpress源码导读
  • 海沧建设局网站erp系统好上手吗
  • 温州网站开发公司做网站上传那个目录
  • 网站制作中山flash网站制作下载
  • 网站开发pc版与手机版各种网站末班
  • wordpress 文章 列表seo怎么做优化排名
  • 优秀网站设计平台网页制作设计多少费用
  • 网址导航建站收录
  • 农产品网站建设 孙修东江门网站建设哪家快
  • 网站域名是什网络个性化定制
  • 南阳医疗网站制作价格打开网站需要用户名密码
  • 宁波网站建设网站排名优化网站设计前景
  • 个人网站需要什么页面如何用凡科网建立一个网站
  • 网站后台模板 仿cnzz网站开发 报价单
  • 苏州知名高端网站建设公司武进建设银行网站首页
  • 网站建设所需费用wordpress点赞功能纯代码
  • 宏泰机械网站建设怎么自己制作二维码内容
  • 怎么搭建自己的网站微信公众号文章里好看的图片在哪个网站做
  • 电商网站商品中心设计方案公司建站 网站设计
  • 乐清网站制作电话广州市政务中心官网
  • 如何用自己网站做大电商做网站图片
  • 百度收录的网站已经失效建大型网站公司简介
  • 做网站银川cf小号自助购买网站
  • linux tomcat 网站目录男女插孔做暖暖的试看网站大全
  • 电子商城网站建设价格3d地图网站模板html