javascript的正则表达式学习资料复习

关于反向引用

复制代码 代码如下:

// 测试函数

function matchReg(reg, str) {

var result = str.match(reg);

if(result) {

console.dir(result);

} else {

console.log('match failed');

}

}

var reg = /([A-Za-z]{0,6})\1/;

var str = 'AndrewAndrew';

// 测试通过

matchReg(reg, str);

//通过(?:pattern)的方式,不记录子表达式匹配的内容(本例中为Andrew)

//所以\1对子表达式匹配内容的引用失败了

//注意:这里强调的是子表达式所匹配的内容,而不是子表达式本身

reg = /(?:[a-zA-Z]{0,6})\1/;

// 测试不通过

matchReg(reg, str);

关于子表达式的定义

var parse_number = /^-?\d+(?:\.\d*)?(?:e[+\-]?\d+)?$/i;

这是一个解析数字的正则表达式,其中的子表达式有(?:\.\d*)和(?:e[+\-]?\d+)

\.和\-分别是对.和-的转义表达

顺便复习下.表示除换行符以外的其他字符

-一般用于[a-zA-Z0-9]表示匹配范围

如果其中没?:例如(\.\d*)那么按照先后顺序,反向引用的关系如下

\1-->(\.\d*)

\2-->(e[+\-]?\d+)

如果有更多的话,就以此类推\3 \4 \5....

再次强调,引用的是子表达式匹配的内容,是具体的文本

关于正向预查

复制代码 代码如下:

var reg = /I like (?=shanghai)/;

var str = 'I like shanghai';

matchReg(reg, str); //测试通过

str = 'I like beijing';

matchReg(reg, str); //不通过

跑下上面的代码,就马上理解什么算是正向预查了,如上面的例子,通过(?=pattern)的形式,正则 表达式预测下后面的内容是不是符合要求,如果是那就顺利匹配.

相对地,(?!=pattern)的使用意图正好与(?=pattern)相反,就不复述了

关于贪心和非贪心匹配模式

复制代码 代码如下:

// 贪心

var reg = /\d{1,}/;

var str = '1999';

matchReg(reg, str); // result[0]为1999 能多匹配就多匹配

// 非贪心

reg = /\d{1,}?/;

matchReg(reg, str); // result[0]为1 只匹配了一个

从上面的结果很容易看出"贪心"和"非贪心"的含义

pattern?这就表明非贪心匹配模式,一般情况就是贪心的

关于Regexp对象exec函数返回的结果

复制代码 代码如下:

// 关于返回结果是个什么

// matchReg函数中console.dir(result)能说明问题,firebug中一看便知

关于string的replace函数

function camelize(str) {

return str.replace(/-(\w)/g, function(inputStr, p1) {

console.log(p1);

return p1.toUpperCase();

});

}

console.log(camelize('background-color'));

function uncamelize(str, sep) {

sep = sep || '-';

return str.replace(/([a-z])([A-Z])/g, function(inputStr, p1, p2) {

console.log('p1:%s, p2:%s', p1, p2);

return p1 + sep + p2;

});

}

console.log(uncamelize('backgroundColor', '-'));

上面两个例子,主要用于说明replace函数的用法,当然还有search,split等函数可以充分利用正则表达式的优势

关于javascript正则表达式的最佳实践

就一句话:尽量的精简,不要复杂,利于读懂和维护!

时间: 2024-10-12 18:31:29

javascript的正则表达式学习资料复习的相关文章

javascript的正则表达式学习资料复习_正则表达式

关于反向引用 复制代码 代码如下: // 测试函数 function matchReg(reg, str) { var result = str.match(reg); if(result) { console.dir(result); } else { console.log('match failed'); } } var reg = /([A-Za-z]{0,6})\1/; var str = 'AndrewAndrew'; // 测试通过 matchReg(reg, str); //通过

正则表达式 学习资料整理_正则表达式

常用正则表达式 整理篇http://www.jb51.net/article/17355.htm 正则表达式高级学习技巧http://www.jb51.net/article/9229.htm 1.正则表达式简介 正则表达式(Regular expression,简写为Regexes)是一种用来操作和检验字符串数据的强大工具.它相当与一串特殊的字符,用它可以转换成算法,对文本进行匹配等操作.        事实上正则表达式有其自身的一套语法,这种语法对于初学者来说显得有些晦涩难懂.尤其是其构造比

正则表达式 学习资料整理

常用正则表达式 整理篇http://www.jb51.net/article/17355.htm 正则表达式高级学习技巧http://www.jb51.net/article/9229.htm 1.正则表达式简介 正则表达式(Regular expression,简写为Regexes)是一种用来操作和检验字符串数据的强大工具.它相当与一串特殊的字符,用它可以转换成算法,对文本进行匹配等操作. 事实上正则表达式有其自身的一套语法,这种语法对于初学者来说显得有些晦涩难懂.尤其是其构造比较困难,称为很

C#中的正则表达式 学习资料

C#中的正则表达式 Jeffrey E.F. Friedl写了一本关于正则表达式的书<精通正则表达式>.作者为了使读者更好的理解和掌握正则表达式,编造了一个故事.该书的语言以perl为主.据我所知C#中的正则表达式也是基于perl5.所以它们应该有许多的共同之处. http://ike.126.com 其实,我并不打算原封不动的对该书的内容进行翻译,一则这本书内容太多了,我根本就不胜任翻译这项工作:二则如果我真的把这本书翻译过来,同时把里面的代码换成C#,在没有征得原作者的情况下,可能有侵权的

javascript正则表达式学习

最近利用一周时间阅读了<精通正则表达式(第3版)>前6章,希望能够精通正则表达式,并且能够撰写<javascript深度理解正则表达式>这样的文章.一周时间太短,我自认为仅仅是达到了"不再畏惧"."更有信心"的程度,因而本文的目标只能是帮助读者"掌握"正则表达式. 我想正则表达式之所以难,主要体现在以下几个方面: 1)正则表达式的符号晦涩难懂 2)不支持排版(至少javascript目前还不支持) 3)不能设置断点,不能跟

JavaScript正则表达式学习笔记与常用正则总结

一.RegExp ECMAScript通过RegExp类型类支持正则表达式,语法和Perl类似: var exp = /pattern/flags; patternb部分是任何简单的或复杂的正则表达式:flags是每个正则表达式所带的一个或者多个标志. 正则表达式的模式匹配支持三个标志: g:全局模式,即模式应用于整个字符串,而非在发现第一个匹配项时立即停止 i:不区分大小写模式 m:多行模式,即到达一行文本末尾是还会继续茶查找下一行中是否存在与模式匹配的项. 1.创建正则表达式 JavaScr

求推荐好的学习资料

问题描述 从熟练的vb转到C#,目前对C#也是基础水平,想用C#用ASP.NET技术开发应用网站,现苦于找一本用C#开发学习资料,哪位大侠推荐下,万分感谢. 解决方案 解决方案二:一开始我用的是asp,VB编写的,后来觉得asp被淘汰了,就转asp.NET,学C#建议买本入门书边看边动手实践,也可以去传智播客等教育网站下载他们的免费入门视频.书的话推荐<21天学会ASP.NET>,其实这本书有的地方不够详细,初学者可能了解不透彻,但还是能帮你较好的来入门,因为我用这一本就推荐了.也建议你不要随

javascript 手机号码正则表达式验证函数 原创

复制代码 代码如下: function checkMobile(){     var sMobile = document.mobileform.mobile.value     if(!(/^1[3|4|5|8][0-9]\d{4,8}$/.test(sMobile))){         alert("不是完整的11位手机号或者正确的手机号前七位");         document.mobileform.mobile.focus();         return false;

在JavaScript的正则表达式中使用exec()方法

         这篇文章主要介绍了在JavaScript的正则表达式中使用exec()方法,是JS入门学习中的基础知识,需要的朋友可以参考下              exec方法为正则表达式匹配的文本搜索字符串.如果找到匹配,则返回结果数组; 否则,返回null. 语法 ? 1 RegExpObject.exec( string ); 下面是参数的详细信息: string : 要搜索的字符串 返回值: 如果找到一个匹配,如果不为空,则返回匹配的文本. 例子: ? 1 2 3 4 5 6 7