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. 20165206 2017-2018-2 《Java程序设计》第8周学习总结

    20165206 2017-2018-2 <Java程序设计>第8周学习总结 教材学习内容总结 进程:进程是程序的一次动态执行过程,对应了从代码加载.执行至执行完毕的一个完整过程,这个过程 ...

  2. 如何让微信里的html应用弹出“点击右上角分享到朋友圈”的图片

    一个分享按钮,一个隐藏的图片(这个图片绝对定位在右上角)然后就是点击显示,点击隐藏了... <a href="javascript:;" onclick="docu ...

  3. 不显示TensorFlow加速指令警告

    vim ~/.bashrc 在打开的文件中追加: export TF_CPP_MIN_LOG_LEVEL= 最后再执行 source ~/.bashrc

  4. CentOS6.9安装Filebeat监控Nginx的访问日志发送到Kafka

    一.下载地址: 官方:https://www.elastic.co/cn/downloads/beats/filebeat 百度云盘:https://pan.baidu.com/s/1dvhqb0 二 ...

  5. 支付宝 app支付 沙盘使用

    文档说明 沙箱测试: App支付沙箱接入注意点 1.app支付支持沙箱接入:在沙箱调通接口后,必须在线上进行测试与验收,所有返回码及业务逻辑以线上为准:2.app支付只支持余额支付,不支持银行卡.余额 ...

  6. centos中less翻页查询的用法

    用法实例: cat 21342.log | less

  7. linux重启服务的脚本命令

    最近做网站测试,每次测试完成都要重启服务,为此写了一个简单的shell脚本 linux服务重启shell脚本示例 2014年12月18日 linux服务重启脚本,如何实现linux服务的定时重启,可以 ...

  8. tomcat配置介绍

    第一节java的介绍 java需要一个java的运行环境 JDK:包含了好几个java组件,包含类库(API) 开发工具(java) jvm(java虚拟机)JRE(类库) tomcat:开源  企业 ...

  9. Codeforces 922F Divisibility 构造

    Divisibility 我们考虑删数字 首先我们可以发现有一类数很特殊就是大于 n / 2的素数, 因为这些素数的贡献只有1, 并且在n大的时候, 这些素数的个数不是很少, 我们可以最后用这些数去调 ...

  10. union表关联模糊查询servlet,action方法

    2018-11-14 servletxml层 public String getSql(String keyword) { StringBuffer sqlSb = new StringBuffer( ...