正则表达式每日一练

测试工具下载
RegexBuddy

1.如何将浮点数点左边的数每三位添加一个逗号,如12000000.11转化为『12,000,000.11』?

//理解零宽断言
function enNumber(num){
      num.toString().replace(/(\d)(?=(\d{3})+\.)/g,"$1,")
}
///(d)(?=(d{3})+\.)/g: 全局(即多次)匹配一个数字, 这个数字后面接着N(N>=1)个三位数(三位数被当做一个整体体看待)后字符串.结束前

2.将一串数字的每3个就用逗号分开的问题

function cutNumber(num){
      return num.toString().replace(/(\d)(?=(\d{3})+\.)/g,"$1,")
}

function numberWithCommas(x) {
    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
}

3.通过test() 后调用RegExp.$..获取分组

if(/(y+)/.test('huangyyychu')){
  console.log(RegExp.$1)  //yyy
}

4.获取一段代码中的图片地址

知识点概括

  1. 巧妙运用字符类取反 [^]
  2. 使用非贪婪模式和边界运用 *? \b
  3. 利用(?:)忽略分组
// 分解知识点
1. 获取2个尖括号里面指定位置的前面所有字符串
<hh jljlj hcc  g>  // 获取<hh 和hcc之间的任意字符
第一步: <hh[^>]*?竟可能少的匹配  ,所以只会匹配<hh
第二步: <hh[^>]*?\bhcc  就会匹配 <hh jljlj hcc
第三部:<hh([^>]*?)\bhcc 设置分组获取对应的字符

2. 获取<img class='xxx' src = "http://lianj-public-test.img-cn-shenzhen.aliyuncs.com//resource/web-0-1499307279918-7b3ce6c10ce17088.jpg" style="display: block">中的图片地址
<img(?:[^>]*?)\bsrc\s*=\s*(["'])([^"']*)\1   
解析: 1. 我们不需要` class='xxx' `这个字符串的分组  2. 需要单引号或者双引号的分组来匹配最后的\1
         3. \1表示匹配分组中最近的长度为1的分组
正则.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 正则表达式到底是什么东西?字符是计算机软件处理文字时最基本的单位,可能是字母,数字,标点符号,空格,换行符,汉字等...
    狮子挽歌阅读 2,198评论 0 9
  • tags: 正则表达式categories: JavaScript欢迎点击我的博客原文 前端会遇到很多字符串验证问...
    浅茉Sara阅读 804评论 1 2
  • 初衷:看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印...
    DCbryant阅读 4,106评论 0 20
  • Java的正则表达式讲解:(为了能看清,本文正则表达式用中文的句号代替英文句点) 英文句点符号:匹配单个任意字符。...
    红姑娘阅读 4,436评论 0 2
  • 忘了从哪收集的资料了,放这儿,以备不时之需。 只能输入数字:"^[0-9]*$"。 只能输入n位的数字:"^\d{...
    study_monkey阅读 1,438评论 0 7