javascript之正则表达式(二)
js正则贪婪模式与非贪婪模式
类似于贪吃蛇游戏,越吃越长。而贪婪模式就是尽可能多的匹配。
默认是贪婪模式 (尽可能多的匹配)
例子: var str='12345678 ';
var reg=/\d{3,6}/g //最多一组6个
console.log(str.replace(reg,X)) //X78
非贪婪模式 (尽可能少的匹配)
例子:var str='12345678';
var reg=/\d{3,6}?/g //最少一组3个
var rea=/\d{3,5}?/g
console.log(str.replace(reg,X)) //XX78
console.log(str.match(rea)) // [ "123" , "456" ]
---------------------------------------------------------------------------------------------------------------------------------------
前瞻
//前瞻就是在正则表达式匹配到规则的时候,向前检查是否符合断言,后顾/后瞻方向相反
//js不支持后顾
//符合和不符合特定断言称为 肯定/正向匹配 和 否定/负向匹配
//(?=)断言

正向前瞻
例子:var str="a2*34v8"
var reg=/\w(?=\d)/g;
console.log(str.replace(reg,'X')) // X2*X4X8
反向前瞻
例子:var str="a2*34v8"
var reg=/\w(?!\d)/g;
console.log(str.replace(reg,'Y')) // aY*3YvY
---------------------------------------------------------------------------------------------------------------------------------------
对象属性(一般写在//后)
global :是否全文搜索,默认false 简写g
ignoreCase L是否大小写敏感,默认false 简写 i
multiline:多行搜索,默认值是false 简写m
latIndex:是当前表达式匹配内容的最后一个字符串的下一个位置
source:正则表达式的文本字符串
---------------------------------------------------------------------------------------------------------------------------------------
RegExp.prototype.test(str)
//用于测试字符串参数中是否存在匹配正则表达式模式的字符串,返回是boolean值
//调用非全局的RegExp对象的exec()时,返回数组
//第一个元素是与正则表达式相匹配的文本
//第二个元素是与RegExpObject的第一个子表达式相匹配的文本
//第三个元素是与RegExp对象的第二个子表达式相匹配的文本,以此类推
例子:var reg=/ \w /g
console.log(reg.test('a')) //多次会有影响判断 因为test()检测方法存在不稳定情况,通常第一次执行的时候,正确率是最高的
while(reg.test('ab')){
console.log(reg.lastIndex) //2 每执行一次会从当前位置向下一个位置查询
}
RegExp.prototype.exec(str)
//使用正则表达式模式对字符串执行搜索,并将更新全局RegExp对象的属性以反映匹配结果
//如果没有匹配的文本则返回null,否组返回一个结果数组:
// - index声明匹配文本的起始字符在字符串的位置
// - input存放杯检索的字符串string

---------------------------------------------------------------------------------------------------------------------------------------
//search()搜查 (具有懒惰性,找到之后就会停止向后查找)
例子:
var str='a1b2c3d4'
console.log(str.search('a1')); //0 返回对象位置
console.log(str.search('10')); //-1 搜索不到显示-1
//index声明匹配文本的起始字符在字符串的位置
//input声明对stringObject的引用
//match()搜查 (具有标准g则match()执行全局检索,找到字符串中的所有匹配字符串)
例子:
var str='a1b2c3d4a1';
var reg=/a1/g;
console.log(str.match(reg)); // ["a1", "a1"]
var str='a1b2c3d4a1'
var str=var str='a1b2c3d4a1';var reg=/a1/gconsole.log(str.match(reg));//["a1", "a1"]'a1b2c3d4a1'var str='a1b2c3d4a1'
javascript之正则表达式(二)的更多相关文章
- JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解
二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...
- 深入浅出的javascript的正则表达式学习教程
深入浅出的javascript的正则表达式学习教程 阅读目录 了解正则表达式的方法 了解正则中的普通字符 了解正则中的方括号[]的含义 理解javascript中的元字符 RegExp特殊字符中的需要 ...
- 如何对Javascript代码进行二次压缩(混淆)
如何对Javascript代码进行二次压缩(混淆) 对Javascript代码进行压缩(混淆),可以有效减少传输和加载时间.但是,不是所有的变量(方法)都能被混淆的,一般来说,只有非属性的变量(方法) ...
- 谈谈 JavaScript 的正则表达式
一.背景 最近在做 CMS 系统中不同身份登录用户的权限管理,涉及到对 api 路径的识别去判断是否放行.以前对正则表达式都是敬而远之,要用到的话都是直接复制粘贴现成网上的表达式,看也看不太懂,借这次 ...
- 深入浅出Javascript的正则表达式
深入浅出的javascript的正则表达式学习教程 阅读目录 了解正则表达式的方法 了解正则中的普通字符 了解正则中的方括号[]的含义 理解javascript中的元字符 RegExp特殊字符中的需要 ...
- JavaScript学习记录二
title: JavaScript学习记录二 toc: true date: 2018-09-13 10:14:53 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...
- JS获取url中query_str JavaScript RegExp 正则表达式基础详谈
面我们举例一个URL,然后获得它的各个组成部分:http://i.cnblogs.com/EditPosts.aspx?opt=1 1.window.location.href(设置或获取整个 URL ...
- 详解Javascript中正则表达式的使用
正则表达式用来处理字符串特别好用,在JavaScript中能用到正则表达式的地方有很多,本文对正则表达式基础知识和Javascript中正则表达式的使用做一个总结. 第一部分简单列举了正则表达式在Ja ...
- javascript类型系统——正则表达式RegExp类型
× 目录 [1]对象 [2]实例属性 [3]静态属性[4]实例方法 前面的话 前面已经介绍过javascript中正则表达式的基础语法.javascript的RegExp类表示正则表达式,String ...
随机推荐
- How to setup Assigned Access in Windows 10 (Kiosk Mode) 设置分配的访问权限(Kiosk模式)
Let’s say you’re building some sort of ingenious mechanical contraption to be displayed in public th ...
- AngularJS的简单使用(入门级)
AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款产品当中. AngularJS有着诸多特性,最为 ...
- 我怎么忽略了身份框架魔法,只是使用OWIN验证的中间件,以获得要求我寻求什么呢?
该OWIN中间件的东西第三方登录集成到您的ASP.NET应用程序是非常酷的,但我似乎无法弄清楚如何就剜出来的新的ID,它取代了蹩脚的成员身份 API.我没有兴趣在坚持所产生的债权,并在英法为基础的数据 ...
- 关于git远程分支操作
对于用户来说,git给人提交到本地的机会.我们可以在自己的机器上创建不同的branch,来测试和存放不同的代码. 对于代码管理员而言,git有许多优良的特性.管理着不同的分支,同一套源代码可以出不一样 ...
- Ruby已经慢慢走向衰退了,那些年代久远而且小众的语言没有翻身的可能性
Ruby已经慢慢走向衰退了,现在WEB开发里,NODE.JS+前端各种框架是主流,PHP.ruby.Asp.net.python等语言在网站编程方面只会越来越少.数据领域方面,机器学习和人工智能中,p ...
- qt源码的submodules要怎么使用
请问我下载了submodules里面的源代码,怎么使用?http://download.qt.io/official_releases/qt/5.7/5.7.1/submodules/如下载了qweb ...
- 深入解析Windows窗口创建和消息分发(三个核心问题:怎么将不同的窗口过程勾到一起,将不同的hwnd消息分发给对应的CWnd类去处理,CWnd如何简单有效的去处理消息,由浅入深,非常清楚) good
笔记:争取不用看下面的内容,只看自己的笔记,就能记住这个流程,就算明白了: _tWinMain-->AfxWinMain,它调用四个函数: -->AfxWinInit用于做一些框架的初始化 ...
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发
进行本文之前需要在数据库用户表里面增加一条用户数据,直接手动添加即可,未安全考虑密码一定要使用Md5加密后的,这里提供666666的Md5密文为(c831b04de153469d),本文完成登录模块的 ...
- kafka笔记4
应用程序使用KafkaConsumer向Kafka订阅主题,并从订阅的主题上接收消息.Kafka消费者从属于消费者群组,一个群组里的消费者订阅的是同一个主题,每个消费者接收主题的一部分分区的消息. 一 ...
- HTML连载13-CSS基本格式以及文字相关的属性
一.CSS格式 1.注意点: (1)style标签必须写在head标签的开始标签和结束标签之间(也就是必须和title标签师兄弟关系) (2)style标签中的属性type属性其实可以不写,默认就是t ...