1.零宽断言

断言指正则表达式可以指明在指定的内容前面或后面会出现满足规则的内容

零宽指的是断言只是匹配的表达式,不占据宽度,也不会出现在返回的匹配结果中

"<span class="read-count">阅读数:641</span>" 找出该字符串中的阅读量

(1)正向先行断言

  语法: (?=pattern)

  作用: 匹配pattern前面的内容,不返回本身

^\\d+(?=</span>)

(2)正向后行断言

  语法:(?<=pattern)

  作用: 匹配pattern后面的内容,不返回本身

^(?<=<span class="read-count">阅读数:)\\d+

(3)负向先行断言

我爱祖国,我是祖国的花朵

  语法:(?!pattern)

  作用:匹配非pattern前面的内容,不返回本身

  匹配非花朵前的祖国

  祖国(?!的花朵)

(4)负向后行断言

  语法: (?<pattern)

  作用: 匹配非pattern后面的内容,不返回本身

2.捕获和非捕获

捕获:匹配表达式,

捕获组:匹配子表达式的内容,把匹配结果保存到内存中中数字编号或显示命名的组里,以深度优先进行编号,之后可以通过序号或名称来使用这些匹配结果。

分为数字编号捕获组和命名编号捕获组
(1)数字编号捕获组分组以()划分,第0组代表原表达式,第1组代表匹配的第一个分组
  语法:(exp)
  例如: (0\d{2})-(\d{8})
  固定电话: 020-85653333
  有如下分组:
  

(2)命名编号捕获组

  也就是自定义分组编号名称

  语法:(?<name>exp)

  上述区号可以这样写:

  (?<quhao>\0\d{2})-(?<haoma>\d{8})

  有如下分组:

  

  (3)非捕获组

    语法:(?:exp)

    用来标识那些不需要捕获的分组

    (?:\0\d{2})-(\d{8})

    第一个表达式不需要捕获

    

3.反向引用

  捕获会返回一个捕获组,这个分组是保存在内存中,不仅可以在正则表达式外部通过程序进行引用,也可以在正则表达式内部进行引用,这种引用方式就是反向引用

  按照捕获组命名规则:反向引用可分为:

  1.数字编号反向引用 \k  或者 \number

  2.命名编号反向引用  \k  或者 \'name'

  捕获组的作用主要是用来查找一些重复的内容或做替换指定字符

  比如要查找一串字母"aabbbbgbddesddfiid"里成对的字母

  首先得匹配到上一个字母,然后保存下来,再判断下一个字母是否和上一个相等,这里可以用捕获保存

  用捕获组作为搜索条件 (\\w)\\1

  \1指数字命名

  

  替换:假如想要把字符串中abc换成a

  String test = "abcbbabcbcgbddesddfiid";
  String reg="(a)(b)c";
    System.out.println(test.replaceAll(reg, "$1"));;

4.贪婪和非贪婪

  贪婪匹配:就是匹配尽可能多的字符,每次不匹配了舍弃最右边字符继续匹配

  非贪婪匹配(懒惰匹配):尽可能少匹配,懒惰量词是在贪婪量词后加个?号

  

5.反义字符

  

  

  

JS 正则表达式深入的更多相关文章

  1. JS正则表达式常用总结

    正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...

  2. 使用外部web组件-----easyUI、jQueryUI、Bootstrap、js正则表达式

    1.使用外部web组件,以Bootstrap为例 <head> <link rel='stylesheet'  href='bootstrap-3.3.0-dist/dist/css ...

  3. js正则表达式图形化工具-rline

    github地址:https://github.com/finance-sh/rline 在线demo: http://lihuazhai.com/demo/test.html 这是一个js正则表达式 ...

  4. Python之路-(js正则表达式、前端页面的模板套用、Django基础)

    js正则表达式 前端页面的模板套用 Django基础 js正则表达式: 1.定义正则表达式 /.../  用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...

  5. JS正则表达式大全

    转自:http://wenku.baidu.com/link?url=3y930kC7F6D3wQdMjQ3fVDmiA9Wfebs_QK0UB3N3mFaEoKg4ytZORPopxufeYA6si ...

  6. js正则表达式replace里有变量的解决方法用到RegExp类

    一直比较害怕使用正则表达式,貌似很深奥很复杂的样子,所以在用js操作字符串的时候,我最多使用的是replace.split.substring.indexOf等函数,这些函数有时候需要多次叠加使用,但 ...

  7. JS正则表达式验证账号、手机号、电话和邮箱

    JS正则表达式验证账号.手机号.电话和邮箱 效果体验:http://keleyi.com/keleyi/phtml/jstexiao/15.htm 验证帐号是否合法 验证规则:字母.数字.下划线组成, ...

  8. 初识JS正则表达式

    初识JS正则表达式 看到的使用的正则表达式练习:http://www.cnblogs.com/wenanry/archive/2010/09/06/1819552.html PS:本文参考李炎恢JS笔 ...

  9. 常用JS正则表达式

    常用JS正则表达式 收集一些常用的JavaScript正则表达式匹配规则,比如匹配电话号码.Email.中文字符.身份证号.邮编.QQ号.过滤空白行.匹配特定数字等.觉得这玩意是很有用的,只不过自己水 ...

  10. JS正则表达式大全(整理详细且实用)

    JS正则表达式大全(整理详细且实用).需要的朋友可以过来参考下,希望对大家有所帮助!! 正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释, ...

随机推荐

  1. Tensorflow生成唐诗和歌词(下)

    整个工程使用的是Windows版pyCharm和tensorflow. 源码地址:https://github.com/Irvinglove/tensorflow_poems/tree/master ...

  2. tensorflow:验证码的识别(上)

    验证码的识别 主要分成四个部分:验证码的生成.将生成的图片制作成tfrecord文件.训练识别模型.测试模型 使用pyCharm作为编译器.本文先介绍前两个部分 验证码的识别有两种方法: 验证码识别方 ...

  3. 来一个使用sysbench测试cpu性能的简单脚本

    #!/bin/bash for ((i=1; i<16; i++)); do sysbench cpu run --cpu-max-prime=10000 --threads=4 --time= ...

  4. 执行shell文件是,提示chmod: 更改'./shell1.sh' 的权限: 不允许的操作。

  5. [转] babel 教程

    在前端开发领域,浏览器兼容性问题从来不曾消失.除了 CSS,我们还要面对 JavaScript 的兼容性问题. 不同的浏览器讲着不同的 JavaScript 语言,不同的浏览器版本同样讲着不同的 Ja ...

  6. C 语言的 GCC 扩展

    GNU 编译器(GCC)提供了很多 C 语言扩展,编译器会使用该信息生成更高效的机器代码. 内联函数 static inline __attribute__ ((always_inline)) int ...

  7. element-ui MessageBox的bug

    通过 use引用messageBox有bug Vue.use(MessageBox) 页面一开始会有一个弹窗,内容空白 Vue.component(MessageBox.name, MessageBo ...

  8. mysql分组(五)

    MySQL GROUP BY 语句 GROUP BY 语句根据一个或多个列对结果集进行分组. 在分组的列上我们可以使用 COUNT, SUM, AVG,等函数. GROUP BY 语法 SELECT ...

  9. asp.net Web API 身份验证 不记名令牌验证 Bearer Token Authentication 简单实现

    1. Startup.Auth.cs文件 添加属性 1 public static OAuthBearerAuthenticationOptions OAuthBearerOptions { get; ...

  10. Cookies 和 Session的区别

    1.cookie 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个WEB站点会话间持久的保持数据. 2.session其实指的就是访问者从到达某个特定主页到离开为止的那段时间. ...