JavaScript中正则表达式常见使用函数
来源:互联网 发布:linux查看当前进程 编辑:程序博客网 时间:2024/05/16 18:39
最近越来越感觉到正则表达式的强大,可以简化很多代码。并且正则表达式入门并不是很难。简单列一下JavaScript中使用正则表达式的一些方法。
//定义几个会用到的变量var href = 'baidu.com?where=b5s&a=b';var regObj = /(\w+)=(\w+)/;//全局搜索var regObj1 = /(\w+)=(\w+)/g;
正则对象上的方法
1.regObj.test();
- 返回true或false
regObj.test(href);//true
2.regObj.exec();
- 每运行一次返回一组结果。
- 如果是非全局搜索,每次运行都返回第一组结果。全局搜索,每次返回一组结果,是在上一次匹配的位置后开始匹配的。regObj的lastIndex属性会修改。当你对一个字符串进行搜索时,如果用它去搜索新的字符串,lastIndex会先设置为0。再切回来又会从0开始。
- 匹配不到返回null,且将lastIndex属性设为0;
- 每组的结果是一个数组,注意这个虽然是数组,但它是包含键值对属性的,可以打印下它的的length看看。[ ‘where=b5s’, ‘where’, ‘b5s’, index: 10, input: ‘baidu.com?where=b5s&a=b’ ];分别是[‘整个正则中匹配的字符’,’第一正则分组匹配的字符’,’第二正则分组匹配的字符’,index:’匹配处的起始位置’,input:’整个原始字符串’];
console.log(regObj1.exec(href));//[ 'where=b5s', 'where', 'b5s', index: 10, input: 'baidu.com?where=b5s&a=b' ]console.log(regObj1.lastIndex);//19console.log(regObj1.exec(href));//[ 'a=b', 'a', 'b', index: 20, input: 'baidu.com?where=b5s&a=b' ]
字符串方法
1.search
- 返回第一组匹配的索引。
href.search(regObj1);//10href.search('a');//1href.search('abcd');//-1匹配不到
2.match
- 返回匹配的值的数组或null。
href.match('123');//nullhref.match(regObj1);//[ 'where=b5s', 'a=b' ]
3.split
- 将字符串分割成数组。中间的分隔符也可以用正则表达式。用在可能有多种分割符的情况
var splitRegObj = /&|\?/;//以&或?分割href.split(splitRegObj);//[ 'baidu.com', 'where=b5s', 'a=b' ];
4.replace
- 直接正则替换。
var res = href.replace(/a|c/,'aaaa');//b__idu.com?where=b5s&a=b 单个替换var res = href.replace(/a|c/g,'aaaa');//b__idu.__om?where=b5s&__=b 全局替换var res = href.replace(/(a|c)/g,'$1-$1');//ba-aidu.c-com?where=b5s&a-a=b 对正则分组的反向引用替换
- 传入函数替换。
var res = href.replace(regObj1,function(){ return 123});//baidu.com?123&123
- 它的replace传入的函数的每个参数的值分别是:每次匹配的字符串;正则第一分组匹配;正则第二分组匹配;……正则第N分组匹配;匹配的初始位置;原始输入值。
var res = href.replace(regObj1,function(match,$1,$2,index,input){ console.log(arguments); //{ '0': 'where=b5s', '1': 'where', '2': 'b5s', '3': 10, '4': 'baidu.com?where=b5s&a=b' }; });//baidu.com?undefined&undefined 这里没给返回值。
- 其实replace是很强大的一个方法。感觉要全部匹配并对正则分组有一些操作的话比上面的regObj.exec()用起来要方便。比如我们要解析这个url中所有的搜索条件以键值对的形式存入一个对象中。可以这样操作。
var obj = {};href.replace(regObj1,function(match,$1,$2){ obj[$1] = $2; return match;//返回匹配的值,即不会修改原始的字符串})console.log(obj);//{ where: 'b5s', a: 'b' }
其它关键词
- 正则表达式与编辑器(如Sublime Text)的搭配使用。
同步发表于:https://github.com/liusaint/JavaScript-record/issues/3
阅读全文
0 0
- JavaScript中正则表达式常见使用函数
- javascript中使用正则表达式
- javascript中使用正则表达式
- JavaScript中使用正则表达式
- javaScript正则表达式相关函数的使用
- 常见的javaScript正则表达式
- 在JavaScript中使用正则表达式
- Javascript中正则 表达式的使用
- 在Javascript中使用正则表达式
- 如何在javascript中使用正则表达式
- 在javascript中使用正则表达式
- JavaScript中使用正则表达式举例
- JAVASCRIPT中 正则表达式的使用
- 详解Javascript中正则表达式的使用
- Javascript中正则表达式的使用介绍
- 详解Javascript中正则表达式的使用
- 详解Javascript中正则表达式的使用
- 详解Javascript中正则表达式的使用
- 如何将项目发布到Tomcat的webapps目录下
- 剑指offer-反转链表
- 费用流——BZOJ1877/Luogu2153 [SDOI2009]晨跑
- Excel应用-术语管理模板(记录单新建记录功能的VBA实现)
- Java使用freeMarker生成Word
- JavaScript中正则表达式常见使用函数
- Set 小结
- 解决EasyUI的datagrid控件显示日期问题
- bzoj 4498 魔法的碰撞
- java取整和java四舍五入方法 BigDecimal.setScale()方法详解.
- FFOS cs call
- android binder机制---Java层获取ServiceManager
- 拜小白教你OpenCV3.2.0+VS2017开发环境配置
- 初识Kafka----个人理解,希望对喜欢kafka的朋友有帮助