一、环视

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. 大叔学ML第四:线性回归正则化

    目录 基本形式 梯度下降法中应用正则化项 正规方程中应用正则化项 小试牛刀 调用类库 扩展 正则:正则是一个汉语词汇,拼音为zhèng zé,基本意思是正其礼仪法则:正规:常规:正宗等.出自<楚 ...

  2. Pycharm永久激活方式

    1.首先下载pycharm破解包 http://idea.lanyus.com/ 2. 将下载的文件放入PyCharm安装bin目录下: 3.在pycharm.exe.vmoptions ,pycha ...

  3. Android开发技术周报182学习记录

    Android开发技术周报182学习记录 教程 App安全二三事 记录 为什么要安全 App的移动安全主要包括下面几种: 密钥破解,导致本地加密数据被盗取. 通信密钥破解,导致接口数据被盗取. 伪造接 ...

  4. 吴恩达机器学习笔记21-正则化线性回归(Regularized Linear Regression)

    对于线性回归的求解,我们之前推导了两种学习算法:一种基于梯度下降,一种基于正规方程. 正则化线性回归的代价函数为: 如果我们要使用梯度下降法令这个代价函数最小化,因为我们未对theta0进行正则化,所 ...

  5. [Swift]Alamofire:设置网络请求超时时间【timeout】的两种方式

    两种方式作用相同,是同一套代码的两种表述. 第一种方式:集聚. 直接设置成员属性(全局属性),这种方法不能灵活修改网络请求超时时间timeout. 声明为成员属性: // MARK: - 设置为全局变 ...

  6. [MySQL]增加约束键

    增加约束键 ALTER TABLE Persons ADD UNIQUE (P_Id) 创建表时加入约束键 CREATE TABLE Persons ( P_Id int NOT NULL, Last ...

  7. 03 使用Tensorflow做计算题

    我们使用Tensorflow,计算((a+b)*c)^2/a,然后求平方根.看代码: import tensorflow as tf # 输入储存容器 a = tf.placeholder(tf.fl ...

  8. jvm详情——7、jvm调优基本配置、方案

    堆设置 -Xmn:设置年轻代大小   (整个堆大小=年轻代大小 + 年老代大小 + 持久代大小.持久代一般 固定大小为64m,所以增大年轻代后,将会减小年老代大小.此值对系统性能影响较大,Sun官方推 ...

  9. LAMP环境快速搭建

    1.安装httpd [root@localhost httpd]# yum -y install httpd #安装httpd [root@localhost httpd]# chkconfig ht ...

  10. 升级glibc、gcc、zlib等

    前言:昨天公司先上线一个项目,需要用到Libreoffice开源办公套件,版本为最新版6.2的.这就难为我老人家,没办法,干吧. 成功的路上总是不那么一番风顺,总会有点小瑕疵,才会让人铭记于心. 先介 ...