JS前向后瞻正则表达式定义与用法示例


Posted in Javascript onDecember 27, 2016

本文实例讲述了JS前向后瞻正则表达式定义与用法。分享给大家供大家参考,具体如下:

定义

x(?=y) 匹配'x'仅仅当'x'后面跟着'y'.这种叫做正向肯定查找。

比如,/Jack(?=Sprat)/会匹配到'Jack'仅仅当它后面跟着'Sprat'。/Jack(?=Sprat|Frost)/匹配‘Jack'仅仅当它后面跟着'Sprat'或者是‘Frost'。但是‘Sprat'和‘Frost'都不是匹配结果的一部分。

x(?!y) 匹配'x'仅仅当'x'后面不跟着'y',这个叫做正向否定查找。

比如,/\d+(?!\.)/匹配一个数字仅仅当这个数字后面没有跟小数点的时候。正则表达式/\d+(?!\.)/.exec("3.141")匹配‘141'但是不是‘3.141'

form https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions

前面这篇https://3water.com/article/84839.htm 解释的比较好懂。

例子:

<html>
<head> 
</head> 
<body>
  <input id="test" type="text" value="" />
  <input id="test" type="text" value="" />
  <input id="test" type="text" value="" />
  <input id="test" type="text" value="" />
  <input id="test" type="text" value="" />
  <script>
  var testStr = "windows 95"
  /* 1 - 不带子表达式匹配 */
  var testReg = /^windows .*$/
  var result = testStr.match(testReg);
  console.log("/^windows .*$/="+result) // /^windows .*$/=windows 95
  /* 2 - 带子表达式匹配 */
  var testReg = /^windows (.*)$/
  var result = testStr.match(testReg);
  console.log("/^windows (.*)$/="+result) // /^windows (.*)$/=windows 95,95
  /* 3 - 带子表达式,不记录其匹配结果 */
  var testReg = /^windows (?:.*)$/
  var result = testStr.match(testReg);
  console.log("/^windows (?:.*)$/="+result) // /^windows (?:.*)$/=windows 95
  /* 4 - 前瞻匹配,匹配位置,正匹配 */
  var testReg = /^windows (?=95)95$/
  var result = testStr.match(testReg);
  console.log("/^windows (?=.*)$/="+result) // /^windows (?=.*)$/=windows 95
  /* 5 - 前瞻匹配,匹配位置,负匹配 */
  var testStr = "windows me"
  var testReg = /^windows (?!95)me$/
  var result = testStr.match(testReg);
  console.log("/^windows (?!\d*)$/="+result) // /^windows (?!d*)$/=windows me
  </script>
</body>
</html>
Javascript 相关文章推荐
jQuery循环滚动展示代码 可应用到文字和图片上
May 11 Javascript
node爬取微博的数据的简单封装库nodeweibo使用指南
Jan 02 Javascript
SuperSlide标签切换、焦点图多种组合插件
Mar 14 Javascript
整理Javascript基础语法学习笔记
Nov 29 Javascript
AngularJs解决跨域问题案例详解(简单方法)
May 19 Javascript
D3.js实现饼状图的方法详解
Sep 21 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
Mar 30 Javascript
Vue.directive 自定义指令的问题小结
Mar 04 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
Aug 17 Javascript
vue-cli中vue本地实现跨域调试接口
Jan 16 Javascript
JS实现分页导航效果
Feb 19 Javascript
详解element-ui动态限定的日期范围选择器代码片段
Jul 03 Javascript
jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码
Dec 27 #Javascript
TypeScript学习之强制类型的转换
Dec 27 #Javascript
如何利用JQuery实现从底部回到顶部的功能
Dec 27 #Javascript
详解js的六大数据类型
Dec 27 #Javascript
javascript ASCII和Hex互转的实现方法
Dec 27 #Javascript
谈谈第三方App接入微信登录 解读
Dec 27 #Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
Dec 27 #Javascript
You might like
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
PHP实现一维数组与二维数组去重功能示例
2018/05/24 PHP
php抽象类和接口知识点整理总结
2019/08/02 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
setAttribute 与 class冲突解决
2008/02/17 Javascript
jQuery LigerUI 使用教程入门篇
2012/01/18 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
2013/11/21 Javascript
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
jquery分页插件jquery.pagination.js使用方法解析
2016/04/01 Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
2016/10/16 Javascript
利用angularjs1.4制作的简易滑动门效果
2017/02/28 Javascript
JS之if语句对接事件动作逻辑(详解)
2017/06/28 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
2020/08/14 Javascript
工作中常用js功能汇总
2020/11/07 Javascript
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
[55:44]OG vs NAVI 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
python解析json串与正则匹配对比方法
2018/12/20 Python
详解python 爬取12306验证码
2019/05/10 Python
PyQt5组件读取参数的实例
2019/06/25 Python
python求质数列表的例子
2019/11/24 Python
如何理解Python中的变量
2020/06/01 Python
PyCharm上安装Package的实现(以pandas为例)
2020/09/18 Python
Foreo国际站:Foreo International
2018/10/29 全球购物
意大利男装网店:Vrients
2019/05/02 全球购物
戴森西班牙官网:Dyson西班牙
2020/02/04 全球购物
财务人员个人自荐信范文
2013/09/26 职场文书
教学实验楼管理制度
2014/02/01 职场文书
2014年图书管理员工作总结
2014/12/01 职场文书
《初涉尘世》读后感3篇
2020/01/10 职场文书
如何在C++中调用Python
2021/05/21 Python
vue中 this.$set的使用详解
2021/11/17 Vue.js
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫