1 // exec() exec() 查找并返回当前的匹配结果,并以数组的形式返回。 2 // test() test() 方法检索字符串中的指定值。返回值是 true 或 false。 3 // compile() compile() 方法用于改变 RegExp。compile() 既可以改变检索模式,也可以添加或删除第二个参数。 4 // match() match() 是获取正则匹配到的结果,以数组的形式返回 5 // replace() replace() 本身是JavaScript字符串对象的一个方法,它允许接收两个参数:replace([RegExp|String],[String|Function]) 6 // search() search() 字符串方法与indexOf()有些类似,search()方法返回第一个匹配值的位置,search()方法不支持全局匹配正规表达式(带参数g) 7 //使用RegExp对象创建 var regObj = new RegExp("(^s+)|(s+$)","g"); 8 //使用直接字面量创建 var regStr = /(^s+)|(s+$)/g; 9 // ()、[]、{} 的区别 10 // () 的作用是提取匹配的字符串。表达式中有几个()就会得到几个相应的匹配字符串。比如 (s+) 表示连续空格的字符串 11 // []是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示字符文本要匹配英文字符和数字。 12 // {}一般用来表示匹配的长度,比如 d{3} 表示匹配三个空格,d[1,3]表示匹配1~3个空格 13 // ^ 和 $ 14 // ^ 匹配一个字符串的开头,比如 (^a) 就是匹配以字母a开头的字符串 15 // $ 匹配一个字符串的结尾,比如 (b$) 就是匹配以字母b结尾的字符串 16 // ^ 还有另个一个作用就是取反,比如[^xyz] 表示匹配的字符串不包含xyz 17 // 需要注意的是:如果^出现在[]中一般表示取反,而出现在其他地方则是匹配字符串的开头 18 // d s w . 19 // d 匹配一个非负整数, 等价于 [0-9] 20 // s 匹配一个空白字符 21 // w 匹配一个英文字母或数字,等价于[0-9a-zA-Z] 22 // . 匹配除换行符以外的任意字符,等价于[^ ] 23 // * + ? 24 // * 表示匹配前面元素0次或多次,比如 (s*) 就是匹配0个或多个空格 25 // + 表示匹配前面元素1次或多次,比如 (d+) 就是匹配由至少1个整数组成的字符串 26 // ? 表示匹配前面元素0次或1次,相当于{0,1} ,比如(w?) 就是匹配最多由1个字母或数字组成的字符串
正则表达式是基于grep和ed这些Unix管理工具发展而来的,使用正则表达式可以使字符串处理变得更加方便快捷,以下内容主要是JavaScript正则表达式的一些基础知识汇总:
1. JavaScript正则表达式的实现
JavaScript对正则表达式的支持是通过ECMAScript中的RegExp类实现的,RegExp对象的构造函数可以带一个或两个参数。第一个参数描述需要进行匹配的模式字符串,第二个参数指定了额外的处理指令。
程序代码
var re=new RegExp("test","gi");
实现方法二:使用Perl风格的语法(较常用)
程序代码
var re=/test/gi; //这种方式和上面是一样的效果
2. 使用RegExp对象的方法
RegExp对象主要方法有:RegExp.test(String) RegExp.exec(String) String.match(RegExp) String.search(RegExp)
2.1 test()方法
test()方法,如果给定字符串匹配这个模式,就返回true,否则返回false。
程序代码
var re=/test/;
alert(re.test("this is the test content")); //output "true"
2.2 exec()方法
exec()方法和test()用法类似,不过exec返回的是一个数组,并且只有一个条目,既是第一次的匹配。
程序代码
var re=/test/gi;
alert(re.exec("this is the test content")); //output "test"
2.3 match()方法
match()方法也是返回一个数组,不过使用方法和上面有区别,match的使用方法为String.match(RegExp)。
程序代码
var re=/te/gi;
alert(("this is the test content").match(re)); //output "te, te"
2.4 search()方法
search()方法和字符串的indexOf()方法类似,返回在字符串中出现的一个匹配的位置。
程序代码
var re=/te/i;
alert(("this is the test content").search(re)); //output 12
3. 在字符串方法中使用正则表达式
在字符串方法String.replace()和String.split()中使用正则表达式。
3.1 String.replace()
程序代码
var re=/te/gi;
alert(("this is the test content").replace(re,"ok")); //output "this is the okst conoknt"
3.2 String.split()
示例代码:
程序代码
var re=/te/gi;
alert(("this is the test content").split(re)); //output "this is the ,st con,nt"
4. 使用元字符
JavaScript正则表达式元字符:
程序代码
( [ { ^ $ | ) ? * + .
任何时候要在正则表达式中使用元字符,都必须对他们进行转义。
程序代码
var re=/?/ //匹配?
var re2=new RegExp("\?"); //匹配?
第二行的定义中使用两个反斜杠,主要是因为JavaScript字符串解析器会按照 的方式翻译?,为了保证不出现这个问题,所以要在元字符前面使用两个反斜杠,我们称之为双重转义。
5. 使用特殊字符
在表达式中可以使用字符串本身,也可以使用它的ASCII码或者Unicode代码,要用ASCII码来表示一个字符,则必须制定一个两位的十六进制代码,并在前面加上x。例如:字符b的ASCII码为98,转换成十六进制为62,既是x62。
程序代码
var re=/x62/;
alert(re.test("blue")); //output "true"
另外也可以使用八进制代替十六进制表示。
示例代码:
程序代码
var re=/142/; //使用八进制表示
alert(re.test("blue")); //output "true"
如果使用Unicode来表示字符,必须制定字符串的四位十六进制表示形式,比如b的表示方式为:u0062
示例代码:
程序代码
var re=/u0062/; //使用Unicode表示
alert(re.test("blue")); //output "true"
另外一些需要双重转义的字符:
程序代码
a e cX v