一、元字符

.      匹配除了换行符以外的字符。

\w   匹配字母或者数字或者下划线

\W  匹配不是字母、数字、下划线

\d   匹配数字,相当于[0-9]

\D  匹配不是数字的字符

\s   匹配任意不可见字符,如空格、制表符,换行符等

\S   匹配任意可见字符

^     匹配字符串开始位置

$    匹配字符串结束的位置

/[\W\w]/  全集

/[\d\D]/   全集

/[\s\S]/   全集

举个栗子:

^和$

举个栗子:

二、量词

*           重复任意次 ,相当于{0,}

?          重复0次或者1次 ,相当于{0,1}

+          重复一次或者更多次,相当于{1,}

{n}        重复n次

{n,}    重复n次或者大于n次

{n,m} 重复n到m次

举个栗子:

三、分支与字符集

(a|b|c)               匹配a或者b或者c字符

[abc]==[a-c]      匹配abc字符

[^abc]==[^a-c]  匹配不是abc字符

举个栗子:

/[a-c]/==(a|b|c) (不加量词的情况)至少有一个字符匹配1次或者多次

/[a-c]/ 加量词和不加量词对比的情况  开头和结尾必须是a开头,c结尾 这个不用多说

不加量词满足条件就是只能匹配a或者b或者c一次,加了量词就可以多匹配

/(a|c|d)/    同   /[a-c]/  一样的用法

解释:前提是以a或者c或者d开头 , 以a或者c或者d结尾  ,无量词只匹配a或者c或者d中的一个一次。有量词就可以多次匹配

四、分组和引用

分组:

/(\d{4})-(\d{2})-(\d{2})/

/(?:\d{4})-(\d{2})-(\d{2})/   分组不捕获  内存占用小  也就是不用把年存起来啦

下面是es2018新增的,低版本浏览器可能不兼容:

命名分组:

引用:引用就是引用谁就是和谁是一样的

\1 对前面的引用   因为下面的第一个加了?:意思就是第一个不存在了  所以第二个变成了第一个  多以\1就是对前面的引用

去掉?:

下面这个:$1代表的就是(\d{2})  $2代码(\1)

RegExp.$[_1-9]

这个和上面的\1,\2,\3一个意思,少见了

/(?<year>\d{4})-(?<month>\d{2})-\k<month>/     \k<month>对月份的引用

五,转义字符

\转义字符  有特殊含义的字符如 .   ?  +  {  }  (   )  等有特殊含义的    /\./匹配点  /\+/匹配加号等

六、零宽断言

需要注意一下几点:

①ab↑cdefm    基于箭头处的位置向后匹配是负向,向前匹配是正向

②肯定是直接按照这pattern进行匹配,否定是按照pattern进行匹配然后取反

③零宽意思是(?=pattern)(?!pattern)(?<=pattern)(?<!pattern)  是不占位置的

④零宽对言意思是根据 (?=pattern)(?!pattern)(?<=pattern)(?<!pattern)里面的表达式对要匹配的字符串进行全局扫描,如果满足就进行匹配,不满足就不匹配,这样的好处是性能高。

举个栗子:

七、惰性和贪婪

贪婪模式:在匹配成功的前提下,尽可能多的去匹配

惰性模式:在匹配成功的前提下,尽可能少的去匹配

贪婪模式用于匹配优先量词修饰的子表达式 像:+,*,{n,m},{n,}

惰性模式用于匹配忽略优先量词修饰的子表达式 ,就是尽量少的。

贪婪模式:

举个栗子:

贪婪模式尽可能多的去匹配,.*把要匹配的都能匹配了,之后剩下bbb,那么久开始回溯,这样再回来匹配bbb,这种匹配方式特别损耗性能。

惰性模式:

举个栗子:

惰性模式尽可能少的去匹配,这样.*?,?就是0个或者1个,也就是可以匹配也可以不匹配,但是第一个是a,,所以.*可以匹配一个a,之后就可以匹配bbb了,这种方式相对于贪婪模式性能要好很多。

 八,修饰符和标志

g    全局

i     忽略大小写

m   多行

es2018 新增:

y    sticky

u    unicode

s    dotAll   就是点  这点包含\n

举个栗子:

九、正则方法

介绍如下:

①pattern.test("字符串")    返回true|false

②pattern.exec("字符串")  返回数组|null

③string.match(pattern)    返回数组|null

④string.replace(pattern,string)    根据正则找到匹配,用第二个参数替换

⑤string.search(pattern)  反回匹配到的字符的索引   没有匹配到反回-1

⑥string.split(pattern|string)    使用正则或者字符串分割一个字符串,将分割后的字符串存储到数组里面返回

加油!!O(∩_∩)O哈哈~

javascript正则用法的更多相关文章

  1. JavaScript 字符串匹配 | JS 的正则用法 | 从后边匹配

    // 字符串匹配命令是 match,不是 replace var text = "http://123.com/456.html" ; window.alert(text.matc ...

  2. JavaScript正则实战

    *:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !impor ...

  3. 我也谈javascript正则匹配

    一.javascript 正则全局匹配 g 慎用test()方法 来个例子: var a = /^[a-z]+/gi; a.test('bb123'); //true a.lastIndex ; // ...

  4. JavaScript正则式入门

    正则式 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表通常被用来检索.替换那些符合某个模式(规 ...

  5. JavaScript 正则

    元字符 预定义类 边界 ^在中括号中时,匹配非hello的 str = 'hello world' str.match(/[^hello]/g) //[" ", "w&q ...

  6. javascript webstorm用法

    javascript  webstorm用法 一.什么是webstorm?       WebStorm 是jetbrains公司旗下一款JavaScript 开发工具.被广大中国JS开发者誉为“We ...

  7. JavaScript正则中\1\2的作用

    一.示例 1. 验证6个相同的数字 var reg = new RegExp(/^(\d)\1{5}/g); var a = '333333'; if(reg.test(a)) { alert('ri ...

  8. JavaScript 正则表达收集整理

    JavaScript 正则表达收集整理 //可为空 /^\s*$/ //密码验证,必须且只含有数字和字母,可以拥有英文符号,6-17位 /(?=.{,})(?=.*\d)(?=.*[a-z])[\x2 ...

  9. JavaScript正则常用知识总结

    一.JavaScript正则相关方法 str.match(regexp)与regexp.exec(str)功能类似. str.search(regexp)与regexp.test(str)功能类似. ...

随机推荐

  1. KMP算法图解

    字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD" ...

  2. PHP is_readable() 函数

    定义和用法 is_readable() 函数检查指定的文件是否可读. 如果文件可读,该函数返回 TRUE. 语法 is_readable(file) 参数 描述 file 必需.规定要检查的文件. 提 ...

  3. PHP mysqli_ssl_set() 函数

    实例 创建 SSL 连接: <?php高佣联盟 www.cgewang.com$con=mysqli_init();if (!$con){die("mysqli_init failed ...

  4. C/C++编程笔记:C语言制作情侣必备《爱情电子相册》,源码解析!

    今天是521,就分享一个程序员必会的——情侣回忆杀<爱情电子相册>吧!话不多说,先上思路,后接源码! 具备能力: 1.基本可视化编程 1.1 initgraph(800,600); 1.2 ...

  5. 【新生学习】第二周:卷积神经网络_part_1

    DEADLINE: 2020-08-01 22:00 写在最前面: 本周学习的是卷积神经网络,是本课程重点中的重点,大家务必要熟练掌握. 本周的学习任务包括 视频学习 . 代码练习 .论文讲解 三部分 ...

  6. squid正向代理访问外网

    目录 一.前言 二.Squid安装 三.客户端设置 四.验证 五.Python请求 六.写在最后 一.前言 1)我们可能会碰到这样的需求,客户端Client-1需要访问Server-1,但由于各种各样 ...

  7. windows下使用redis命令行模式查询数据

    背景:redis的火,就像java一样,对于测试人员来说,使用它就需要好好搞下,现在就整理下命令行模式,来查询获取自己想要的值: 命令行连接命令:redis-cli -h 主机名 -p 端口号 -a ...

  8. 【NOIP2016】换教室 题解(期望DP)

    前言:状态贼鸡儿多,眼睛快瞎了. ----------------------- 题目链接 题目大意:给定$n(课程数),m(可换次数),v(教室数),e(无向边数)$,同时给定原定教室$c[i]$和 ...

  9. 利用这10个工具,你可以写出更好的Python代码

    我每天都使用这些实用程序来使我的Python代码可显示. 它们是免费且易于使用的. 编写漂亮的Python比看起来难. 作为发布工作流程的一部分,我使用以下工具使代码可显示并消除可避免的错误. 很多人 ...

  10. myBatis源码解析-数据源篇(3)

    前言:我们使用mybatis时,关于数据源的配置多使用如c3p0,druid等第三方的数据源.其实mybatis内置了数据源的实现,提供了连接数据库,池的功能.在分析了缓存和日志包的源码后,接下来分析 ...