js正则表达式(七)
一、正则表达式对象的创建
方法一:
使用构造函数的形式:
var pattern = new RegExp('正则表达式','修饰符');
var pattern = new RegExp('hello','igm'); //需要匹配的字串为'hello'
方法二:
使用字面量的形式:
var pattern = /正则表达式/修饰符;
var pattern = /hello/igm; //需要匹配的字串为'hello'
正则表达式中的修饰符:
i (ignore case) 匹配时不区分字母的大小写 【不区分大小写】
g (global) 匹配时整个字符串中查找 【全局】
m (multiline) 匹配时多行查找 【多行】
二、正则表达式原型对象中的属性及方法
⑴原型属性:
RegExp.prototype.global 【pattern.global】
布尔值,表明这个正则表达式是否带有修饰符g
RegExp.prototype.ignoreCase 【pattern.ignore】
布尔值,表明这个正则表达式是否带有修饰符i
RegExp.prototype.multiline 【pattern.multiline】
布尔值,表明这个正则表达式是否带有修饰符m
RegExp.prototype.lastIndex
如果匹配模式带有g,使用test()和exec()方法时,这个属性会存储在整个字符串中下一次检索的开始位置;
如果没有带g,则lastIndex一直为0
RegExp.prototype.source 【pattern.source】
包含正则表达式文本
⑵原型方法:
exec()方法和test()方法与lastIndex间关系影响:
a、如果正则表达式中有修饰符"g",pattern对象中会维护lastIndex属性,记录下一次开始的位置,当第二次执行exec的时候,从lastIndex开始检索。
b、如果正则表达式中没有修饰符"g",不会维护lastIndex属性,每次执行从开始位置0开始检索
1、RegExp.prototype.exec():【返回值:匹配到的结果数组或null】
var result = pattern.exec(str);
2、RegExp.prototype.test():【返回值:匹配到返回true;否则,返回false】
var pattern = pattern.test(str);
3、RegExp.prototype.toString():
将正则表达式对象转化为相应的字符串形式
三、Javascript中String字符串对正则表达式的支持的相关方法
1、search()
str.search(正则表达式);
a.如果参数不为正则表达式,则先通过RegExp将其转换为构造函数。
b.不支持全局检索,返回第一个与之匹配的子串的位置,如果找不到匹配的子串,返回-1。
2、match() 【最常用的正则表达式方法】
str.match(正则表达式);
a.返回由匹配结果组成的数组或者null。
注意:【正则表达式是否有g修饰时】
a.没有g修饰符时,就不是全局匹配。这时,数组的第一个元素就为匹配的字符串,
剩余的元素则是由正则表达式中用圆括号括起来的匹配到的子表达式。
eg:
console.log("HELLO world hello".match(/(hello)/i)); //["HELLO","HELLO"] 前者为匹配到的字符串,后者为由正则表达式中用圆括号括起来的子表达式【与匹配串样式相同】
b.有g修饰符时,则该方法返回的数组包含字符串中所有匹配结果。
eg:
"1 plus 2 equals 3".match(/\d+/g) //返回["1","2","3"]
3、replace() 【用以执行检索和替换操作】
str.replace(正则表达式,要替换的字符串);
eg:
"helloWorld HEllo".replace(/hello/gi,“JavaScript”); //"JavaScriptWorld JavaScript"
4、split() 【字符串转成数组】
a.参数可以为字符串,也可以为正则表达式
b.以参数字串或正则表达式形式分割字符串,并将后面分割的部分组成返回数组中的元素
eg:
"1,2,3,4,5".split(","); //["1","2","3","4","5"] 以,分割字符串并返回一个新数组
"1, 2, 3, 4, 5".split(/\s*,\s*/); //["1","2","3","4","5"] 允许分隔符左右两边留有空白
四、正则表达式中的贪婪模式与非贪婪模式(懒惰模式) 【默认为贪婪模式】
贪婪模式:在正则表达式中单个模块含有次数情况时:优先选择最多次数进行匹配
非贪婪模式:在正则表达式中单个模块含有次数情况时:优先选择最少次数进行匹配
贪婪模式转化为非贪婪模式:
在正则表达式单个模块设置的次数后面加?,这样可以将贪婪模式转化为非贪婪模式
eg:
var str = 'hello world javaScript';
var pattern = /\w{3,8}/i;
console.log(pattern.exec(str)); //贪婪模式:结果为['hello']
var pattern = /\w{3,8}?/i;
console.log(pattern.exec(str)); //非贪婪模式:结果为['hel']
js正则表达式(七)的更多相关文章
- [转]js 正则表达式
一.正则表达式中包括的元素 1.原子(普通字符:a-z A-Z 0-9 .原子表. 转义字符) 2.元字符 (有特殊功能的字符) 3.模式修正符 (系统内置部分字符 i .m.S.U…) 二.正则表达 ...
- JS正则表达式完整教程
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 验证帐号是否合法 验证规则:字母.数字.下划线组成, ...
随机推荐
- NIO网络访问模式实践
1.创建NioNest12类 一个线程监听5个端口的事件 public class NioTest12 { public static void main(String[] args) throws ...
- vue-cli安装webpack项目及初始配置
这个下载包是自己基于 webpack 搞的,可以看看https://github.com/chichengyu/webpack vue-cli安装 输入 npm install vue-cli -g ...
- gcc 编译两个so其中soA依赖soB
有两个so,其中soB中调用soA: 那么我们打包soB的时候连接soA: 在打包test程序的时候连接soB,此时soB会自动查找依赖的soA: 如下测试 在编译之前指定环境变量:export LD ...
- Selenium+Java完整框架搭建(2019完整版)
一.WebDriver框架开发实战 1.框架的思想 (1)什么是框架? 框架是可以被应用开发者定制的应用骨架 (2)为什么要写框架? 提高脚本可维护性 提高编写脚本的速度 提高脚本可阅读性 (3)框架 ...
- Executors创建四种线程池
newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程.newFixedThreadPool 创建一个定长线程池,可控制线程 ...
- DLL注入实践
Windows系统大量使用dll作为组件复用,应用程序也会通过dll实现功能模块的拆分.DLL注入技术是向一个正在运行的进程插入自有DLL的过程. Window下的代码注入 常见的Windows代码注 ...
- Ubuntu16.04安装Consul
1.下载安装包 https://www.consul.io/downloads.html wget https://releases.hashicorp.com/consul/1.5.3/consul ...
- centos7 spark2.3.1集群搭建
1.安装jdk 2.安装scala 参照jdk的安装 3.ssh 免密码登录 4.安装hadoop 以上四步请参照 centos7 安装hadoop2.7.6(分布式) 5.安装spark 1) ...
- CMDB资产采集的四种方式
转 https://www.cnblogs.com/guotianbao/p/7703921.html 资产采集的概念 资产采集的四种方式:Agent.SSH.saltstack.puppet 资产采 ...
- 【bat】【windows】通过端口杀死进程
简单的bat处理,把指定端口集合杀死相应的进程,就是杀死对应的pid @echo off & setlocal EnableDelayedExpansion ]= ]= ]= ]= ]= fo ...