一、环视

1:环视不“占用”字符,只匹配字符所在的特定位置。

2:正则表达式是从左向右进行匹配的。

二、肯定顺序环视(?=....)

子表达式匹配当前位置的右侧字符

图中:红色表示当前位置,绿色表示正则匹配,黄色表示断言匹配

(1):起始位为0

(2):从左向右查看文本,如果当前位置字符与表达式2匹配成功,就查看右侧文本是否满足断言条件,当条件1与条件2都成立时就匹配成功。

三、肯定逆向环视(?<=...)

子表达式匹配当前位置的左侧字符

图中:红色表示当前位置,绿色表示正则匹配,黄色表示断言匹配

(1):起始位为0

(2):从左向右查看文本,如果当前位置的左侧能与表达式(?=4)匹配成功,就进入下一个表达式2的匹配。当条件1与条件2都成立时就匹配成功。

三、否定逆向环视(?<!...)与否定顺序环视(?!...)

类似逻辑表达式 非

四、实例-1 行分位

'use strict';
{
// 千分位
let str = "当前消费 ¥1203.00元";
let reg = new RegExp(/(?<=\d)(?=(?:\d{3})+(?!\d))/g);
let result = str.replace(reg,',');
console.log(result); //当前消费 ¥1,203.00元
}

五、实例-2 电话号码格式化

'use strict';
{
// 电话号码格式化为:xxx-xxxx-xxxx
let str = "18210443800";
let reg = new RegExp(/(?<=\d)(?=(?:\d{4})+(?!\d))/g);
let result = str.replace(reg,'-');
console.log(result); // 182-1044-3800
}

六、实例-3 身份证号格式化

'use strict';
{
// 身份证号格式化为:xxxxxx xxxx xxxx xxxx
let str = "110101199003070812"; // 随便输的号码 用于测试
let reg = new RegExp(/(?<=\d{6})(?=(?:\d{4})+(?!\d))/g);
let result = str.replace(reg,' ');
console.log(result); // 110101 1990 0307 0812
}

我的百度经验地址:https://jingyan.baidu.com/article/e73e26c07f51a724adb6a7e4.html

js 正则表达式之环视结构的更多相关文章

  1. JS正则表达式完整教程

    JS正则表达式完整教程(略长) 引言 亲爱的读者朋友,如果你点开了这篇文章,说明你对正则很感兴趣. 想必你也了解正则的重要性,在我看来正则表达式是衡量程序员水平的一个侧面标准. 关于正则表达式的教程, ...

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

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

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

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

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

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

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

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

  6. JS正则表达式大全

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

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

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

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

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

  9. 初识JS正则表达式

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

随机推荐

  1. 从构建分布式秒杀系统聊聊WebSocket推送通知

    秒杀架构到后期,我们采用了消息队列的形式实现抢购逻辑,那么之前抛出过这样一个问题:消息队列异步处理完每个用户请求后,如何通知给相应用户秒杀成功? 场景映射 首先,我们举一个生活中比较常见的例子:我们去 ...

  2. Nginx+tomcat集群使用redis共享session

    一 :nginx负载均衡 当Tomcat当做独立的Servlet容器来运行时,可看做是能运行Java Servlet的独立Web服务器. 此外 Tomcat还可以作为其他Web服务器进程内或者进程外的 ...

  3. ajax&bootstrap

    1.ajax 后台 # 通过flask框架搭建后台 from flask import flask,request # 创建一个服务器对象 app = Flask(__name__) # 解决ajax ...

  4. knn算法的c语言实现

    最近研究KNN,找到了一些优秀的源码,贴出来,做个笔记吧. #include<stdio.h> #include<stdlib.h> #include<math.h> ...

  5. redux源码学习笔记 - createStore

    本篇是学习redux源码的一些记录,学习的redux版本是^4.0.1. 在页面开发时,需要管理很多状态(state),比如服务器响应,缓存数据,UI状态等等···当页面的庞大时,状态就会变的混乱.r ...

  6. Android Studio 更新同步Gradle错误解决方法

    1.在https://services.gradle.org/distributions/下载对应的gradle的zip包,对应方法见gradle-wrapper.properties文件中的: di ...

  7. 关于 Abp 替换了 DryIoc 框架之后的问题

    在之前有些过一篇文章 <使用 DryIoc 替换 Abp 的 DI 框架> ,在该文章里面我尝试通过以替换 IocManager 内部的 IContainer 来实现使用我们自己的 DI ...

  8. springboot 与 shiro 整合 (简洁版)

    前言: 网上有很多springboot 与 shiro 整合的资料,有些确实写得很好, 对学习shiro和springboot 都有很大的帮助. 有些朋友比较省事, 直接转发或者复制粘贴.但是没有经过 ...

  9. Linux常用命令之压缩和解压缩命令

    目录 1.压缩解压缩格式 .gz 一.将文件压缩为 .gz 格式,只能压缩文件:gzip 二.将 .gz 文件解压:gunzip 2.压缩解压缩格式 .tar.gz 一.将文件或目录压缩为 .tar. ...

  10. 【Python】正则表达式纯代码极简教程

    <Python3正则表达式>文字版详细教程链接:https://www.cnblogs.com/leejack/p/9189796.html ''' 内容:Python3正则表达式 日期: ...