一、正则表达式对象的创建
方法一:
使用构造函数的形式:

    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正则表达式(七)的更多相关文章

  1. [转]js 正则表达式

    一.正则表达式中包括的元素 1.原子(普通字符:a-z A-Z 0-9 .原子表. 转义字符) 2.元字符 (有特殊功能的字符) 3.模式修正符 (系统内置部分字符 i .m.S.U…) 二.正则表达 ...

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

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

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

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

  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. Python之路-(js正则表达式、前端页面的模板套用、Django基础)

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

  7. JS正则表达式大全

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

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

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

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

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

随机推荐

  1. SNPsnap | 筛选最佳匹配的SNP | 富集分析 | CP loci

    一个矛盾: GWAS得到的SNP做富集分析的话,通常都会有强的偏向性. co-localization of GWAS signals to gene-dense and high linkage d ...

  2. Python适合练手的项目

    原文地址:https://www.jianshu.com/p/039156321e30 项目地址:https://github.com/DeqianBai/Python-Project/tree/ma ...

  3. 解决window的bat脚本执行出现中文乱码的问题

    window下通过新建txt文件然后改成.bat的文件,输入内容后,执行出现中文乱码?原因: 批处理文件,是以ANSI编码方式.若以别的方式(如UTF-8)编辑了批处理,转换成ANSI格式即可,正常创 ...

  4. mysql5.7同步复制报错1060故障处理

    mysql5.7同步复制报错故障处理 # 报错 1060,具体如下Last_Errno: 1060Last_Error: Coordinator stopped because there were ...

  5. C语言宏应用-------#define STR(X) #X

    C语言宏应用-------#define STR(X) #X   #:会把参数转换为字符串 #define STR(x) #x #define MAX 100 STR(MAX) 会被扩展成" ...

  6. webService和Restful

    restful是一种架构风格,其核心是面向资源,更简单:而webService底层SOAP协议,主要核心是面向活动:两个都是通过web请求调用接口 RESTful是什么: 首先要了解什么是REST,R ...

  7. php mysql 根据经纬度计算距离和排序

    #.两点距离(1.4142135623730951) ,),point(,)); ORDER BY distance; mysql 5.6 添加 #.两点球面距离(.0357231545m) ,),p ...

  8. python - logging.basicConfig format参数无效

    有这么一段python代码 import threading import time import requests from decimal import Decimal, ROUND_DOWN i ...

  9. Superset配置hive数据源

    1.在uri中配置 hive://localhost:10000/default 2.查询 3.如果你的hive集群是带有kerberos认证的,hive数据源需要这样配置 hive://xxx:xx ...

  10. 开源录屏软件Capture推荐

    参考链接:有哪些值得推荐的电脑录屏软件与手机录屏软件? - 霸都丶傲天的回答 - 知乎 下载地址(9.0支持中文)