Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29956464
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: 系统运维

2010-03-08 21:52:04

Javascript中正则使用专题整理

[整理人:遥方 整理时间:2010-2-24]

之前我们整理过pythonasp里面的正则使用。现在来整理一下有关JS中的正则使用,方便将来的直接使用。

一、JS中的RegExp 对象

ASP不也是它嘛。哈哈找到伴了

创建对象:  new RegExp(pattern, attributes);

参数

参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。

参数 attributes 是一个可选的字符串,包含属性 "g""i" "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。

PS:即构造函数中的pattern 就是我们千辛万苦所找到的正则表达式。

返回值

一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。

如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当 pattern 是正则表达式时,它只返回 pattern,而不再创建一个新的 RegExp 对象。

 

异常:

SyntaxError - 如果 pattern 不是合法的正则表达式,或 attributes 含有 "g""i" "m" 之外的字符,抛出该异常。

TypeError - 如果 pattern RegExp 对象,但没有省略 attributes 参数,抛出该异常。

 

1.1 RegExp 对象的属性

F属性

描述

FF

IE

RegExp 对象是否具有标志 g

1

4

RegExp 对象是否具有标志 i

1

4

一个整数,标示开始下一次匹配的字符位置。

1

4

RegExp 对象是否具有标志 m

1

4

正则表达式的源文本。

1

4

 

1.2 此对象的方法

方法

描述

FF

IE

编译正则表达式。

1

4

检索字符串中指定的值。返回找到的值,并确定其位置。

1

4

检索字符串中指定的值。返回 true false

1

4

得到新创建的对象之后就可以使用其相关的方法了。通过test 这样的方法就可以判断一个字符串(目标)是否包含了我们所指定的正则表达式了!

实战:

示例一:

与面向对象的编程思想是一样的。

示例二:

以上表示的是此对象的属性值

示例三:

                                                                              如果能够匹配到则返回True否则返回false

示例四:

                                                                              表示返回第一次匹配到的文本内容值

 

以上我们介绍了JS里面的正则表达式对象的属性与方法。在ASP里面有这样的一个表达式

Set Matches = regEx.Execute(strng)                                     返回Match对象是由execute返回的
JS里面这还有点区别。JS里面是通过

stringObj.match(rgExp)

其中stringObj是必选项。对其进行查找的 String 对象或字符串文字。

PS:即这个方法是针对字符串对象而使用的。即对于一个字符串对象是可以使用match方法进来。

示例:

 

 

 

 

 

二、以上介绍了RegExp对象主要是应用于正则对象上面。现在来介绍一下字符串对象的使用

可以讲这个是我们正则的用武之地

2.1      search

格式 stringObject.search(regexp)

说明:其中的regexp是我们所定义的正则表达式

返回:stringObject 中第一个与 regexp 相匹配的子串的起始位置。

如果没有找到任何匹配的子串,则返回 -1

示例:

var reCat = new RegExp("cata","gi");

alert("adfcatakscatakklCata".search(reCat));              //返回 3    

PS以后我们的正则使用方法就统一这样走了。先创建出来一个正则对象然后再使用字符串对象调用它

2.2      match

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。该方法类似 indexOf() lastIndexOf(),但是它返回指定的值,而不是字符串的位置。

返回值:存放匹配结果的数组。

两种使用方法

stringObject.match(searchvalue)                              //参数表示的是 要搜索的值
stringObject.match(regexp)                      //参数表示的是正则表达式对象

 

示例:

var str="Hello world!"
document.write(str.match("world") + "
")     
第一种
 
var str="1 plus 2 equal 3"
document.write(str.match(/\d+/g))                           第二种
 
2.3 replace

方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

语法:

stringObject.replace(regexp,replacement)
 

参数

描述

regexp

必需。规定了要替换的模式的 RegExp 对象。请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。

replacement

必需。一个字符串值。规定了替换文本或生成替换文本的函数。

 

返回值:

一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。

PS:在目标字符串中寻找到匹配的内容将其替换成新的内容再输出来!

示例:

心得:类似于SED中的正则表达式的用法

 

2.4 split

split() 方法用于把一个字符串分割成字符串数组。

语法:stringObject.split(separator,howmany)

参数

描述

separator

必需。字符串或正则表达式,从该参数指定的地方分割 stringObject

howmany

可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。

返回值:

一个字符串数组。该数组是通过在 separator 指定的边界处将字符串 stringObject 分割成子串创建的。返回的数组中的字串不包括 separator 自身。

注释:String.split() 执行的操作与 执行的操作是相反的。

示例:

results = "|a|b|c".split("|",2)

alert(results.length);                        // 2

返回的是一个数组出来。而且定义好了数组的长度值为2

 

三、实战演示

示例一:  //校验登录名:只能输入5-20个以字母开头、可带数字、“_”“.”的字串

var reCat = new RegExp("^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$","gi");    //正则表达式

var contents = "1adkl";

alert(reCat.test(contents));

示例二:只能包含数字、字母、小数点

我想这个 正则表达式可以拿来一用哦!

 

阅读(749) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~