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

javascript正则深入

文章目录

  • 一、前言
  • 二、高级`API`
    • 2.1、模式匹配的用法`(x)`
    • 2.2、非捕获括号的模式匹配`(?:x)`
    • 2.3、先行断言`x(?=y)`
    • 2.4、后行断言`(?<=y)x`
    • 2.5、正向否定查找`x(?!y)`
    • 2.6、反向否定查找`(?<!y)x`
    • 2.7、字符集合和反向字符集合的用法 `[xyz] / [^xyz]`
    • 2.8、词边界和非单词边界匹配`\b\B`
    • 2.9、空白字符和非空白字符匹配`\s\S`
    • 2.10、单字字符和非单字字符匹配`\w\W`
  • 三、使用案例
    • 3.1、去除字符串内指定元素的标签
    • 3.2. 短横线命名转驼峰命名
    • 3.3. 去除字符串中的空格符
    • 3.4. 判断指定格式的数据输入合法性
    • 3.5. 去除`url`参数字符串中值为空的字段
    • 3.6. 将浏览器参数字符串转化为参数对象
    • 3.7. 计算字符串字节数
    • 3.8. 匹配是否包含中文字符
    • 3.9. 实现搜索联想功能
  • 四、最后

一、前言

正则表达式也许是javascript语言中最晦涩难懂的,但是也往往是最简洁的。工作中遇到的很多问题,诸如搜索,查找,高亮关键字等都可以使用正则轻松解决。

如果大家觉得正则表达式理解起来很麻烦,也可以使用如下在线网站【前往】, 只需要输入你的正则表达式, 它就能以图形的方式将你的正则展示出来:

二、高级API

2.1、模式匹配的用法(x)

模式匹配主要用来匹配某一类字符串并记住匹配项.

案例:

let str = 'xuxi is xuxi is'
let reg = /(xuxi) (is) \1 \2/g
reg.test(str)  // true    (1)
str.replace(reg, '$1 $2')  // xuxi is  (2)

解释: 其中括号被称为捕获括号, 模式中的 \1\2 表示第一个和第二个被捕获括号匹配的子字符串,即 xuxiis,匹配了原字符串中的后两个单词, 因此(1)中运行的结果为true. 当我们在字符串中使用replace时, 我们可以使用$1, $2这样的方式获取第n个匹配项,并用来替换字符串. 如(2)中的运行结果.

2.2、非捕获括号的模式匹配(?:x)

主要用来匹配某一类字符串但不记住匹配项.

案例:

let str = 'xuxixuxi'
let reg = /(?:xuxi){1,2}/g
reg.test(str)  // true    (1)

img

解释: 其中(?:)被称为非捕获括号, 我们可以使用它匹配一组字符但是并不记住该字符,一般用来判断某类字符是否存在于某字符串中.

2.3、先行断言x(?=y)

先行断言: 匹配x仅仅当x后面跟着y.

案例:

let str = '王者融化'
let reg = /王(?=者)/
reg.test(str)  // true    (1)

img

解释: /王(?=者)/会匹配到仅当它后面跟着.但是不属于匹配结果的一部分.

2.4、后行断言(?<=y)x

后行断言: 匹配x仅当x前面是y.

案例:

let str = 'xuxiA'
let reg = 
http://www.lryc.cn/news/313443.html

相关文章:

  • React-封装自定义Hook
  • Spark实战-基于Spark日志清洗与数据统计以及Zeppelin使用
  • Springboot中Redis的配置使用
  • 【node版本问题】运行项目报错 PostCSS received undefined instead of CSS string
  • Spring揭秘:BeanDefinitionRegistry应用场景及实现原理!
  • 蓝桥杯(3.5)
  • 434G数据失窃!亚信安全发布《勒索家族和勒索事件监控报告》
  • 7-18 彩虹瓶(Python)
  • php使用ElasticSearch
  • wpf prism左侧抽屉式菜单
  • 揭秘AI新纪元:近期人工智能发展的惊人突破与未来展望
  • C语言基础练习——Day01
  • 用云手机进行舆情监测有什么作用?
  • 神经网络(neural network)
  • 微信小程序用户登陆和获取用户信息功能实现
  • 2024年3月8日 晨会汇报
  • 去电脑维修店修电脑需要注意什么呢?装机之家晓龙
  • 国家妇女节放假是法定的假日
  • Pytorch线性回归实现(Pycharm实现)
  • 2024新疆专升本考试报名教程详解
  • unicloud 云数据库概念及创建一个云数据库表并添加记录(数据)
  • 想交易盈利?Anzo Capital昂首资本发现了一本畅销书
  • 美国站群服务器租用需要考虑哪些关键点
  • 如何构建Hive数据仓库Hive 、数据仓库的存储方式 以及hive数据的导入导出
  • 【Linux】软件管理器yum和编辑器vim
  • 怎么才能确定螺栓是拧紧了——SunTorque智能扭矩系统
  • 西门子S120故障报警F30003的解决办法总结
  • 探索vue框架的世界: 内部、外部样式和内联样式动态绑定的方法
  • 代码随想录算法训练营第三十八天|动态规划|理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
  • 运维知识点-JBoss