JS 正则表达式深入
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.捕获和非捕获
捕获:匹配表达式,
捕获组:匹配子表达式的内容,把匹配结果保存到内存中中数字编号或显示命名的组里,以深度优先进行编号,之后可以通过序号或名称来使用这些匹配结果。
(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 正则表达式深入的更多相关文章
- JS正则表达式常用总结
正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...
- 使用外部web组件-----easyUI、jQueryUI、Bootstrap、js正则表达式
1.使用外部web组件,以Bootstrap为例 <head> <link rel='stylesheet' href='bootstrap-3.3.0-dist/dist/css ...
- js正则表达式图形化工具-rline
github地址:https://github.com/finance-sh/rline 在线demo: http://lihuazhai.com/demo/test.html 这是一个js正则表达式 ...
- Python之路-(js正则表达式、前端页面的模板套用、Django基础)
js正则表达式 前端页面的模板套用 Django基础 js正则表达式: 1.定义正则表达式 /.../ 用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...
- JS正则表达式大全
转自:http://wenku.baidu.com/link?url=3y930kC7F6D3wQdMjQ3fVDmiA9Wfebs_QK0UB3N3mFaEoKg4ytZORPopxufeYA6si ...
- js正则表达式replace里有变量的解决方法用到RegExp类
一直比较害怕使用正则表达式,貌似很深奥很复杂的样子,所以在用js操作字符串的时候,我最多使用的是replace.split.substring.indexOf等函数,这些函数有时候需要多次叠加使用,但 ...
- JS正则表达式验证账号、手机号、电话和邮箱
JS正则表达式验证账号.手机号.电话和邮箱 效果体验:http://keleyi.com/keleyi/phtml/jstexiao/15.htm 验证帐号是否合法 验证规则:字母.数字.下划线组成, ...
- 初识JS正则表达式
初识JS正则表达式 看到的使用的正则表达式练习:http://www.cnblogs.com/wenanry/archive/2010/09/06/1819552.html PS:本文参考李炎恢JS笔 ...
- 常用JS正则表达式
常用JS正则表达式 收集一些常用的JavaScript正则表达式匹配规则,比如匹配电话号码.Email.中文字符.身份证号.邮编.QQ号.过滤空白行.匹配特定数字等.觉得这玩意是很有用的,只不过自己水 ...
- JS正则表达式大全(整理详细且实用)
JS正则表达式大全(整理详细且实用).需要的朋友可以过来参考下,希望对大家有所帮助!! 正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释, ...
随机推荐
- sublime快捷键的使用
Sublime text 3是码农最喜欢的代码编辑器,每天和代码打交道,必先利其器,掌握基本的代码编辑器的快捷键,能让你打码更有效率.刚开始可能有些生疏,只要花一两个星期坚持使用并熟悉这些常用的快捷键 ...
- 微信小程序--代码构成---WXSS 样式
WXSS 样式 WXSS 具有 CSS 大部分的特性,小程序在 WXSS 也做了一些扩充和修改. 新增了尺寸单位.在写 CSS 样式时,开发者需要考虑到手机设备的屏幕会有不同的宽度和设备像素比,采用一 ...
- PyOpenCV图像逆时针旋转90度
warpAffine方法效果很搓,留下大片黑色区域. 使用flip和transpose可以实现逆时针旋转90度.先flip或先transpose均可. #coding:utf-8 import cv2 ...
- Nginx 提示host not found in upstream 错误解决方法
Nginx DNS resolver配置实例,本文讲解在proxy_pass 和 upstream server 通信的时候需要手动指定 resolver,本文就给出了配置实例. nginx 通过 ...
- 一元线性回归与R语言
(https://mirrors.tuna.tsinghua.edu.cn/CRAN/)下载好R之后打开,就可以输入命令,如下,我输入 > y=c(61,57,58,40,90,35,68) ...
- 【Maven】Select Dependency 无法检索
问题: 在 “pom.xml” 中,点击 “Dependencies” -> “Add” 添加依赖时,无法检索. 如下图所示: 解决办法: 依次点击 “Windows”->“Show ...
- ELK收集Nginx自定义日志格式输出
1.ELK收集日志的有两种常用的方式: 1.1:不修改源日志格式,简单的说就是在logstash中转通过 grok方式进行过滤处理,将原始无规则的日志转换为规则日志(Logstash自定义日志格式) ...
- BZOJ4003 [JLOI2015]城池攻占 左偏树 可并堆
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ4003 题意概括 题意有点复杂,直接放原题了. 小铭铭最近获得了一副新的桌游,游戏中需要用 m 个骑 ...
- Zipkin Server Configuration Using Docker and MySQL[转]
Zipkin is a used for capturing timing data, it also has a centralized repository, and a microweb ser ...
- Zookeeper三个监听案例
一.监听某一节点内容 /** * @author: PrincessHug * @date: 2019/2/25, 14:28 * @Blog: https://www.cnblogs.com/Hel ...