正则表达式原来在机房重构的时候就了解过,那时候看博客有伙伴用正则表达式对输入框内容进行限制,用的那些字符但是看着不懂,只知道可以达到那样的效果,学习asp.net验证控件的时候的时候又用到它,这次学习JavaScript再次了解它,那么下面我们来认识一下正则表达式。
一、什么是正则表达式
正则表达式(regular expression)是一个描述字符模式的对象。ECMAScript的RegExp类表示正则表达式,String和RegExp都定义了使用正则表达式进行强大的模式匹配和文本检索与替换的函数。百度解释为正则表达式,又称正规表示法、常规表示法,它使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。我的理解就是
二、为什么使用正则表达式
正则表达式主要用来验证客户端输入数据(像学号,姓名,性别,电话,邮箱等等)。用户填写完单击按钮之后,信息会被发送到服务器,在提交到服务器前会首先进行验证,程序中的正则表达式主要用来验证客户端输入的数据,可以节约大量的服务器端的系统资源,并且可以提供更好的用户体验。
三、创建
创建正则表达式和创建字符串类似,有两种方法:
1.通过new运算符
<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">var box=new RegExp('box','ig');</span></span>
2.字面量方式
<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">var box=/box/ig;</span></span>
四、测试正则表达式
RegExp对象包含两个方法:test()和exec(),功能基本相似,用于测试字符串匹配。
1.test()方法
test()方法在字符串中查找是否存在制定的正则表达式并返回布尔值,如果存在则返回true,如果不存在则返回false。
<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">var pattern=new RegExp('box','i');//创建正则表达式,不区分大小写 var str='This is a Box!'; //创建要比对的字符串 alert(pattern.test(str)); //通过test()方法验证是否匹配</span></span>
运行弹出提示框:
2.exec()方法
exec()方法也用于在字符串中查找制定正则表达式,如果exec()方法执行成功,则返回包含该查找字符串的相关信息数组,如果执行失败,则返回null.
<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">/*使用exec返回匹配数组*/ var pattern=/vivian/i; var str='I am vivian!'; alert(pattern.exec(str)); //匹配了返回数组,否则返回null</span></span>
运行弹出提示框:
五、使用字符串的正则表达式的方法
以replace()方法为例:
<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">/*使用exec返回匹配数组*/ var pattern=/vivian/ig; var str='I am vivian!,She is vivian too'; alert(str.replace(pattern,'Lily')); //将vivian替换为 Lily</span></span>
运行后显示:
六、获取控制
正则表达式元字符是包含特殊含义的字符,它们有一些特殊功能,可以控制匹配模式的方式。
以邮箱验证为例:
<span style="font-family:KaiTi_GB2312;font-size:18px;">var pattern=/^([\w\.\-]+)@([\w\-]+)\.([\w]{2,4})$/; var str='[email protected]'; alert(pattern.test(str));</span>
贪婪和惰性
贪婪:先看整个字符串是否匹配,如果不匹配就把最后一个字符串去掉再进行匹配,依次从右向左,直到找到匹配或者不剩任何字符才停止。
惰性:先看第一个字符串是否匹配,如果不匹配再看第二个,以此类推从左到右,与贪婪量词方向相反。
1.贪婪模式:
<span style="font-family:KaiTi_GB2312;font-size:18px;">var pattern=/[a-z]+/; var str='abcdefj'; alert(str.replace(pattern,'1'));</span>
所有字符串变为1,最后运行结果为:1
2.惰性模式:
<span style="font-family:KaiTi_GB2312;font-size:18px;">var pattern=/[a-z]+?/; var str='abcdefj'; alert(str.replace(pattern,'1'));</span>
只有第一个字符变为1,后面没有匹配,运行结果为:1bcdefj
总结:
原来学习asp.net验证控件的时候有电子邮箱的验证,选择了之后会看到一大串的又是字母和数字又是符号的东西,那时候就在想这是什么鬼东西,现在学习了js才知道原来是这样,asp.net已经将正则表达式封装好了,不需要我们自己去写。
这篇博客只是介绍了一些基础中的基础,写的例子也是比较简单的,这篇博客就作为入门吧。正则表达式真的是好强大,我们可以写出符合我们要求的东西,但是它的匹配符有许多,现在我对于它们只是皮毛中的皮毛,如果真的要熟悉还需要多写才行。
版权声明:本文为博主原创文章,未经博主允许不得转载。