全部博文(2065)
分类: 系统运维
2010-03-08 21:52:04
Javascript中正则使用专题整理
[整理人:遥方 整理时间:
之前我们整理过python与asp里面的正则使用。现在来整理一下有关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));
示例二:只能包含数字、字母、小数点
我想这个 正则表达式可以拿来一用哦!