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 验证帐号是否合法 验证规则:字母.数字.下划线组成, ...
随机推荐
- android细节之android.intent.category.DEFAULT的使用
我们知道,实现android的Activity之间相互跳转需要用到Intent, Intent又分为显式Intent和隐式Intent, 显式Intent很简单,比如我在FirstActivity中想 ...
- Mysql 排序规则选择
排序规则:是指对指定字符集下不同字符的比较规则.其特征有以下几点: 1. 两个不同的字符集不能有相同的排序规则 2. 两个字符集有一个默认的排序规则 3. 有一些常用的命名规则.如_ci结尾表示大小写 ...
- ThinkPHP5中模型关联关系一对一,一对多
TP5 返回json反斜杠前面转义了class XinDai extends Controller{ public function index(){ $res = [ ['logo'=>'/i ...
- Python - Django - 中间件 process_request
process_request 函数是中间件在收到 request 请求之后执行的函数 该函数的执行顺序是按照 settings.py 中中间件的配置顺序执行的 如果该函数返回 None,继续执行后面 ...
- ODAC Developer Downloads - Oracle Universal Installer
https://www.baidu.com/link?url=BL2vRNMWap6AFJcmsFCEKi3KxZ2SgmtVJoihVKhF-SPgzvJHNkbk_j7nz1HdtAAWZ22NM ...
- php对数组遍历的两种方式示例
在对 php 数组遍历时,一般经常使用 foreach 来遍历,很少用 while 来遍历,在下面的代码中作一个对比. <?php $content = ["ID" => ...
- Swift编码总结10
1.打开App显示文件已损坏,打不开,您应该将它移到废纸篓,怎么办? 终端输入执行:sudo spctl --master-disable 2.Mac的Siri打开网页控制台,进入开发中模式:不过我觉 ...
- Rancher容器目录持久化
最近一直在研究Rancher的持久化问题. 目前已找到两种方式实现Rancher里的容器文件实现持久化方法. 方法一: 配置映射(只适用单个文件,不适用于目录) 这个算不上是真正的持久化,只是相当于配 ...
- Java分布式:分布式服务框架——ZooKeeper
Java分布式:ZooKeeper——核心概念 ZooKeeper 统一配置管理 统一命名服务 分布式锁
- git diff/difftool
参考好文:使用命令和P4Merge进行diff::https://www.cnblogs.com/cgzl/p/8597066.html git difftool 即可弹出比较工具的界面 哈哈 === ...