【JS】浅述JS常用的正则表达式

来源:互联网 发布:vb语言代码大全 编辑:程序博客网 时间:2024/05/16 11:57

  Javascript中的正则表达式(regular expression)提供了强大的模式匹配和文本检索与替换的函数,常用于数据提交到服务器之前先进行简单的表单验证,以节约大量的服务器端系统资源,并提供更好的用户体验。下面简单介绍一下javascript中如何使用正则表达式。

有2种创建方法,分别是采用new运算符创建和采用字面量方式(常用)。

方法一:采用new运算符创建

var box=new RegExp('helloworld');      //第一个参数是字符串var box=new RegExp('helloworld','igm');     //第二个参数是可选模式修饰符,i表示忽略大小写,g表示全局,m表示多行匹配

方法二:采用字面量方式,使用一对斜杠/*********/来表示匹配验证的规则

var box=/helloworld/;              //直接用2个斜杠var box=/helloworld/ig;           //第二个斜杠后面加上模式修饰符


常用的正则表达式:

1、验证邮政编码,格式为:6位数字,且首位不能为0

var pattern=/[1-9][0-9]{5}/;     //若写成首位匹配模式:/^[1-9][0-9]{5}$/,则str前后不能添加其他字符,即str='137680';var str='The code is 137680.';alert(pattern.exec(str));


2、检查文件压缩包,格式为:文件名+扩展名,文件名可以是字母、数字、下划线,扩展名可以是zip,gz,rar,7z。

字母、数字、下划线使用正则表达式可表示为/[a-zA-Z0-9_]/,也可简写为/\w/(小写w);另外,若要匹配横杆-(或中文横杆——),则添加转义\-(或中文横杆\——);添加+号表示可以匹配一个或多个字符。

使用转义\.匹配扩展名前的点号。

zip|gz|rar|7z,中间的竖线|表示“或”关系,即匹配4种格式中的任意一种即可。

var pattern=/[\w\-\——]+\.zip|gz|rar|7z/;var str='test-123.zip';alert(pattern.exec(str));

3、删除多余空格,原理:把空格替换成''。转义\s表示检查空格,g表示全局查找,若不添加g则只匹配第一个空格,即显示“123456 789  007  892”

var pattern=/\s/g;var str='123 456 789  007  892';alert(str.replace(pattern,''));


4、删除首尾空格

方法一

/^\s+/ ^表示从头开始严格匹配,+号表示匹配一个或多个空格,否则只匹配一个空格

/\s+$/ $表示从尾部严格匹配

var pattern=/^\s+/;           //强制首var str='        te  st        ';var result=str.replace(pattern,'');pattern=/\s+$/;          //强制尾result=result.replace(pattern,'');alert('|'+result+'|');

方法二:使用非贪婪(惰性)捕获

/^\s+(.+?)\s+$/ (*******)使用括号表示分组,在这里表示第一个分组。

(.+)中.表示任意字符,.+表示一个或多个任意字符。该种写法属于贪婪模式,会显示“|te   st       |”。

添加问号?则是惰性模式,st后面匹配到空格后就不再允许匹配"te   st"中的空格了,(.+?)会显示“|te   st|”。

注意:\s后面的+号并非连接符,而是表示匹配该法则的一个或多个字符。

var pattern=/^\s+(.+?)\s+$/;var str='        te  st        ';var result=pattern.exec(str)[1];alert('|'+result+'|');

方法三:使用分组获取

同样需要惰性捕获,否则会显示“|te   st       |”。

$1同样表示第一个分组,此处的$1获取到的内容是"te   st",然后对"        te  st        "进行替换。

var pattern=/^\s+(.+?)\s+$/;var str='        te  st        ';var result=str.replace(pattern,'$1');alert('|'+result+'|');

 

4、简单的验证电子邮件,格式分为几组:()@().()  即用户名+@+邮箱类型+.+后缀   邮箱类型有126、163、qq、gmail等,后缀(不能是数字)有com\cn\net等

{m,n}表示字符个数多于m且少于n。

此处的[0]即第0个分组,表示获取"test_123@163.com"。

var pattern=/^([\w\.\-\#]+)@([\w\-]+)\.([a-zA-Z]{2,3})$/;var str='test_123@163.com';alert(pattern.exec(str)[0]);

 

上面用到的exec()方法可以用test()方法替换,但返回的值是布尔类型。

以上的正则表达仅为简单的验证,欢迎大家一起探讨,共同进步。


Author:致知

Sign:路漫漫其修远兮,吾将上下而求索。

0 0
原创粉丝点击