javascript正则表达式(二)——方法
正则表达式规则见:http://www.cnblogs.com/wishyouhappy/p/3756812.html,下面说明相关方法
String相关方法
概括:
search()
replace()
match()
split()
1. search(RegExp)
- 返回第一个与之匹配的子串的起始位置,找不到子串时返回-1
- 如果search的参数不是正则表达式,则会通过RegExp将其转化为正则表达式
- search不支持全局检索g,因而即使加了也会忽略g
eg:
console.log( "Javascript".search(/script/i)); //4
2. replace(RegExp, String)
- 用以检索和替换,首先会对字符串使用RegExp检索,然替换字符串
- 如果加了g则所有的替换,如果不加g则只替换第一个
- 如果第一个参数是字符串,则之间检索,而不是转换为RegExp区别与search()
- 使用$加数字可以指定子表达式相匹配的文本的替换
eg1:
var sentence = "javascript is really interesting";
console.log(sentence.replace(/javascript/gi,"Javascript")); //Javascript is really interesting
eg2:将英文引号转化为中文引号
var sentence = "\"javascript is really interesting\"";
var quote = /"([^"]*)"/g;
console.log(sentence);
console.log(sentence.replace(quote,'“$1”'));
输出:
"javascript is really interesting"
“javascript is really interesting”
var sentence = "\"javascript is really interesting\"";
var quote = /"([^"]*)"/g;
console.log(sentence);
console.log(sentence.replace(quote,'hhh$1kkk')); 输出
"javascript is really interesting" VM93:4
hhhjavascript is really interestingkkk
3. match(RegExp)
- 返回由匹配结果组成的数组
- 如果加g全局检索,如果不加g只检索第一个匹配
- 即使不进行全局检索,返回的也是一个数组,数组第一个元素是匹配的字符串,余下的元素是圆括号括起来的子表达式
- 当传入非全局表达式时等价于exec()方法,下面RegExp的方法中介绍
- 没有匹配时返回null
eg1:
var sentence = "javascript is really interesting,java is also an interesting language, java and javascript have many similarities"; console.log(sentence.match(/java+[a-z]*/gi)); 输出:
["javascript", "java", "java", "javascript"]
eg2:解析网址
var urlPattern = /(\w+):\/\/([\w.]+)\/(\S*)\/([\w\S.]+html)/;
var url = "visit my blog at http://www.cnblogs.com/wishyouhappy/p/articles~.html";
var result = url.match(urlPattern);
if(result != null){
var fullUrl = result[0];
var protocol = result[1];
var host = result[2];
var path = result[3];
var file = result[4];
console.log(fullUrl);
console.log(protocol);
console.log(host);
console.log(path);
console.log(file);
}
输出:
http://www.cnblogs.com/wishyouhappy/p/articles~.html
http
www.cnblogs.com
wishyouhappy/p
articles~.html
4. split()
- 将字符串拆分为字符串数组
- 参数可以是字符串或者正则表达式
eg:
console.log("22,33,44".split(","));
console.log("22 , 33, 44 ".split(","));
console.log("22 , 33, 44".split(/\s*,\s*/));
输出:
["22", "33", "44"]
["22 ", " 33", " 44 "]
["22", "33", "44"]
RegExp对象方法
RegExp有5个属性如下:
source: 正则表达式文本
global:对应g
ignoreCase:对应i
multiline:对应m
lastIndex:如果带有g属性,该值存储下一次检索的开始位置
1. 构造方法RegExp(String,String)
注意:1.当给RegExp()传入一个正则表达式时如果有\作为转义字符,则需用\替换为\\
2. 第二个参数是可选的,但是第二个参数只能传入修饰符g、i、m或是它们的组合
eg:
var zipCode = new RegExp("\\d{5}","gm");
2.exec()
- 使用类似string的match()方法,在字符串中进行匹配检索只是传入的参数是相反的,match()传入RegExp,exce传入string
- 没有匹配时返回null,有匹配时返回数组和match中的非全局匹配类似
- 属性Index包含发生匹配的字符位置
- 如果没有检索结果lastIndex会重置为0
eg:
var urlPattern = /(\w+):\/\/([\w.]+)\/(\S*)\/([\w\S.]+html)/;
var url = "visit my blog at http://www.cnblogs.com/wishyouhappy/p/articles~.html";
var result = urlPattern.exec(url);
if(result != null){
var fullUrl = result[0];
var protocol = result[1];
var host = result[2];
var path = result[3];
var file = result[4];
console.log(fullUrl);
console.log(protocol);
console.log(host);
console.log(path);
console.log(file);
} //输出
http://www.cnblogs.com/wishyouhappy/p/articles~.html VM49:11
http
www.cnblogs.com
wishyouhappy/p
articles~.html
3.test()
等价于exec,exec返回null时test()对应为false,否则为true
eg:
var urlPattern = /(\w+):\/\/([\w.]+)\/(\S*)\/([\w\S.]+html)/;
var url = "visit my blog at http://www.cnblogs.com/wishyouhappy/p/articles~.html";
console.log( urlPattern.test(url)); //true
注意事项
String的4个方法不会用到lastIndex属性,exec和test需要用到,如果设置了g属性则要么找出所有的匹配然后自动将lastIndex置为0要么手动置为0
javascript正则表达式(二)——方法的更多相关文章
- javascript 正则表达式(二)
/* 正则表达式方法:test(),exec(),String对象方法:match(),search(),replace(),split() 1.test()方法: 用法: regexp对象实例.t ...
- 第五篇、javascript正则表达式二
一.内容概要 1)创建着呢规则表达式对象的两种方法 2)正则表达式的常用属性和方法 3)string对象常用方法中可以使用正则表达式 4)ES中其他预定义的对象:Math.Date.Number.Bo ...
- 迅速搞懂JavaScript正则表达式之方法
咱们来看看JavaScript中都有哪些操作正则的方法. RegExp RegExp 是正则表达式的构造函数. 使用构造函数创建正则表达式有多种写法: new RegExp('abc');// /ab ...
- 初学JavaScript正则表达式(二)
正则表达式的实例化与标识符 字面量: var reg = /\bis\b/g // \b--字符边界 g全文搜索 查找单词为is的字符 He is a boy. IS He? 构造函数: var re ...
- javascript正则表达式(一)——语法
前言 js中类RegExp类表示正则表达式,具有强大的模式匹配.文本检索和替换功能.正则表达式的模式规则是由一个字符序列组成,包括所有字母和数字在内,大多数的字符都是按照直接量匹配字符,某些特殊字符并 ...
- JavaScript正则表达式学习笔记(二) - 打怪升级
本文接上篇,基础部分相对薄弱的同学请移步<JavaScript正则表达式学习笔记(一) - 理论基础>.上文介绍了8种JavaScript正则表达式的属性,本文还会追加介绍几种JavaSc ...
- JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解
二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...
- JavaScript的replace方法与正则表达式结合应用讲解
大家好!!今晚在华软G43*宿舍没什么事做,把javascript中replace方法讲解一下,如果讲得不对或不合理是情理之中的事,因为我不是老鸟,也不是菜鸟,我也不知道我当底是什么鸟??呵~~ re ...
- JavaScript正则表达式,你真的知道?
一.前言 粗浅的编写正则表达式,是造成性能瓶颈的主要原因.如下: var reg1 = /(A+A+)+B/; var reg2 = /AA+B/; 上述两个正则表达式,匹配效果是一样的,但是,效率就 ...
随机推荐
- S2SH框架集成详解(Struts 2.3.16 + Spring 3.2.6 + Hibernate 3.6.10)
近期集成了一次较新版本的s2sh,出现了不少问题,网上资料也是良莠不齐,有的甚至就是扯淡,简单的把jar包扔进去就以为是集成成功了,在这里整理一下详细的步骤,若哪位有什么不同看法,可以留言,欢迎批评改 ...
- Badge分析&如何逼死处女座
Badge分析 所谓Badge,原本是iOS上的一个效果,但是被Android抄的多了,也就成了Android的标配.图就不上了,大家都懂的. 应用icon显示角标实际上是在Launcher中实现的, ...
- Android系统移植与驱动开发----第一章
第一章 Android系统移植与驱动开发 Android源代码定制完全属于自己的嵌入式系统,但是支持的设备不多,所以要移植,而在移植的过程中使用的不得不提的是驱动开发. Android系统构架主要包括 ...
- mac 卸载java
由于电脑上的jdk版本和项目组使用的版本不一致,因此需要卸载,但是作为一个新人小白加没有使用mac的过多经验,还是稍微费了一些些功夫的,从网上查的资料,终于解决这个问题,因此记录一下. 参考博客:ht ...
- NPOI从数据库中导出数据到Excel
首先要添加NPOI.dll程序集 https://yunpan.cn/cMeSTELJSXmJJ 访问密码 8d83 把里面的程序集都添加到引用里 下面的代码是从数据库导出到Excel { //pa ...
- java编程思想-注解思维导图
- Sql Server插入随机数
--处理性别随机select (case when round(rand()*10,0)>5 then '男' else '女' end), --处理时间段范围内随机select dateadd ...
- ASP.NET 5服务
ASP.NET5已经把web服务从应用程序当中解耦出来了,它支持IIS和IIS Express, 用Kestrel和WebListener自宿主,另外,开发都或者第三方软件提供商都可以自定义开发ASP ...
- android launcher3 home页简易分析
最近在修改一个问题:就是修改home页下,用户手动拖出来的APP图片下面的字体显示不全,思路比较明确,需要尽量加大整个APP控件的高度,或者缩小图片和文字之间的间隔. 跟代码发现APP整个控件的lay ...
- spring resttemplate中的转码
/* * 初始化RestTemplate,RestTemplate会默认添加HttpMessageConverter * 添加的StringHttpMessageConverter非UTF-8 所以先 ...