限定符

匹配前面的子表达式零次或一次,0或1,可以使用{0,1}代替

举例:

在平常webpack的rules配置中,用来匹配ts和tsx文件

{test: /.tsx?$/
}

非贪婪匹配

能匹配少的就不匹配多的原则

举例:

查找字符串的数字,如果有3个数字连在一起,就直接匹配

const str = 'sd2345s423987sd2342'
str.match(/d{3,5}?/g)
// 因为增加了"?"符合,导致只要有符合3个连续数字的就返回。
// ["234", "423", "987", "234"]str.match(/d{3,5}/g)
// 去掉"?"后,变成了默认模式,就是贪婪匹配
// ["2345", "42398", "2342"]

查找img全标签

const str = '<img class="latex" style="width:2.323ex; height:2.009ex; vertical-align: -0.171ex;" src="https://td.com/1.png" /><span>s</span>'
str.match(/<img.*?/?>/g)
// ["<img class="latex" style="width:2.323ex; height:2.…l-align: -0.171ex;" src="https://td.com/1.png" />"] // 下面把第一个"?"去掉,发现结果就是全部匹配了。
str.match(/<img.*/?>/g)
// ["<img class="latex" style="width:2.323ex; height:2.…1ex;" src="https://td.com/1.png" /><span>s</span>"]

先行断言

x 只有在 y 前面才匹配,必须写成/ x(?=y)/的形式

举例:

查找字符串%前面的数字

const str = 'The best way to achieve a goal is to devote 100% of your time and energy to it.'
str.match(/d+(?=%)/g)

先行否定断言

x 只有不在 y 前面才匹 配,必须写成/ x(?!y)/的形

举例:

查找字符串中数字不在%前面的数字

let str = 'I have more than 100 books'
str.match(/d+(?!%)/g)
// ["100"]
str = 'I have more than 100 books, but only 20% is about software'
str.match(/d+(?!%)/g)
// 【注意】2也匹配到了,如果需要把20也过滤掉,需要额外加代码
// ["100", "2"]

非获取匹配

输出内容,但是不匹配

举例:

输出查找到的内容

/(?:js|golang) is good/.exec('js is good, golang is good')
// js这个词虽然有()进行处理,但是不会被匹配到,而是整体输出`js is good`
// ["js is good", index: 0, input: "js is good, golang is good", groups: undefined]/(js|golang) is good/.exec('js is good, golang is good')
// 去掉“?:”之后的结果
// ["js is good", "js", index: 0, input: "js is good, golang is good", groups: undefined]

后行断言

"后行断言"正好与"先行断言"相反 , x 只有在 y 后面才匹配 , 必须写成/(?<=y)x/的 形式

举例:

查找¥后面的数字

let str = `I spent ¥100 RMB to buy this book`
/(?<=¥)d+/.exec(str)

后行否定断言

x 只有不在 y 后面才匹配,必须写成/(?<! y)x/的形式

举例:

查找不是¥后面的数字

let str = `I spent $100 RMB to buy this book`;
/(?<!¥)d+/.exec(str)
// ["100", index: 9, input: "I spent $100 RMB to buy this book", groups: undefined]

对于文章不足之处,欢迎留言指出,也可以发送邮件给我(wangluofei@bytedance.com),谢谢。BTW,字节欢迎更多前端同学的加入。

js去除字符串数字前面的0_JS正则里面“?”的用处相关推荐

  1. js去除字符串数字前面的0_JS基础复习-七种基本数据类型

    前言:JS必须死记的七种数据类型 string number boolean null undefined symbol(比较特殊,先不做讨论) object 一.string-字符串 1.定义:字符 ...

  2. js去除字符串中的所有空格(包括前后,中间存在的所有空格),清除前后空格(手机输入框实用),es6新方法

    一.js去除字符串中的所有空格: str = "  hello  world !  " str.replace(/\s/g,""); 感觉很好用. 二.去除左右 ...

  3. js去除字符串的空格

    说到去除空格,首先都会想到的就是trim()方法,但是trim()只能去除字符串前后的空格,无法去除字符串中间的空格. 下面总结一下js去除字符串空格的几种方法: 1.trim() trim()是去除 ...

  4. js去除字符串空格(空白符) 将数组转化为字符串

    需求:使用elment input框 文本域,支持多工单号查询,因为复制的数据会有空格出现,后端不要空格 所以需要去除空格并转成字符串 js去除空格: let a = this.crud.query. ...

  5. JS去除字符串中间多余空格

    JS去除字符串中间多余空格 // An highlighted blockvar str = '1 1 2 333 777 99 adf 'var arr = str.split('')var str ...

  6. js中字符串数字转换为数值类型

    js中将字符串数字转换为数值类型的方法: 1. 使用Number( ) 和String( )这个两个内建函数. var a = 42; var b = String( a ); var c = &qu ...

  7. js 去除字符串左右两边空格

    js 去除字符串左右两边空格 //使用js自带的trim()let actionValue=value.target.value.trim()this.$set(record, 'paramKey', ...

  8. JS去除字符串左右两端的空格

    去除字符串左右两端的空格,在vbscript里面可以轻松地使用 trim.ltrim 或 rtrim,但在js中却没有这3个内置方法,需要手工编写.下面的实现方法是用到了正则表达式,效率不错,并把这三 ...

  9. 导出excel数字前面的0消失_EXCEL文本之王TEXT函数的4个运用

    转自EXCEL不加班 今天分享文本之王TEXT函数的4个运用,跟着卢子一起来操作. 1.发票号都是8位,从系统导出后前面的0消失,如何补齐? 常规格式发票号前面的0都会消失,只有文本格式情况下的0才不 ...

最新文章

  1. F1 score的意义
  2. 微软Vista今起大幅降价 最高幅度达到千元
  3. spring3-mvc实例-信息转换
  4. Linux 常用命令全集
  5. Android菜单详解
  6. MyDriver2-397 XCTF 3rd-RCTF-2017 (windows 驱动题)
  7. sublime - sublimerge 文本比较插件
  8. 【转】职场学做“功夫熊猫”
  9. python 组合数字和字符_python无限生成不重复(字母,数字,字符)组合的方法
  10. 热更新方案-难不难在于你
  11. 去哪儿2017校园招聘 开发工程师(第二批次)- 题解
  12. 计算机的指标是什么意思,评价计算机的性能指标是什么
  13. 漫画 | 妹子让我写个程序,我却搞砸了...
  14. 柳州副市长:酸雨之都如何再现碧水蓝天
  15. 小世界网络中的SIRS传染病模型实现
  16. Ubuntu安装dos2unix工具
  17. 小米开源监控open-falcon安装
  18. 在Adobe Illustrator中创建漂亮的冬季场景
  19. 品牌如何借势奥运进行微博营销
  20. TA入门笔记·美术向(二)

热门文章

  1. cocos2d-x 中菜单类
  2. mac 显示隐藏文件的命令行和快捷键
  3. 杂项-EMS:CRM
  4. 1.视频压缩编码综述
  5. 简单解决XP共享连接数10限制(转)
  6. 微信公众账号 token 验证失败 解决办法
  7. qt5连接sqlite数据库实例
  8. 用康托展开实现全排列(STL、itertools)
  9. 【病毒】开机弹出“tlntsvi_6635.exe程序”解决方案
  10. SYN攻击原理以及检测防范技术