js正则表达式使用总结

和正则表达式相关的方法和属性:

RegExp对象的方法:

test,返回一个bool值,它指出在被查找的字符串中是否存在模式。如果存在返回true,否则返回false.
exec, 用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组。
compile, 把正则表达式编译为内部格式,从而执行更快。

RegExp对象的属性:

source, 返回正则表达式模式的文本的复本,只读。
lastIndex, 返回字符位置,它是被查找字符串中下一次成功匹配的开始位置。
$1...$9, 返回九个模式匹配期间查找的字符串,只读。
input ($_),返回执行规范表述查找的字符串,只读。最好是这样使用RegExp['$_']
lastMatch ($&),返回任何正则表达式搜索过程中的最后匹配的字符,只读。
lastParen ($+),如果有的话,返回任何正则表达式查找过程中最后括的子匹配,只读。
leftContext ($`),返回被查找的字符串从字符串开始位置到最后匹配之前的位置之间的字符,只读。
rightContext ($'),返回被搜索的字符串中从最后一个匹配位置开始到字符串结尾之间的字符。只读。

string对象一些和正则表达式相关的方法:

match, 找到一个或多个正则表达式的匹配。
replace, 替换与正则表达式匹配的子串。
search, 检索与正则表达式相匹配的值。
split, 把字符串分割为字符串数组。 


var re=new RegExp('a');
var re=new RegExp('a','i');

RegExp构造函数第一个参数为正则表达式的文本内容,而第二个参数则为可选项标志,标志可以组合使用:

g, 全文查找
i, 忽略大小写
m, 多行查找

创建正则表达式也可以简写为:
var re=/\d+/gi;

所有的元字符:当要用到元字符本身时,要进行转义。
( [ { \ ^ $ | ) ? * + .

贪婪匹配:re=/(\d+)0/;  表示匹配10,100,1000,10000等,能匹配多少就匹配多少。
惰性匹配:re=/(\d+)?0)/; 表示匹配10,返回最少匹配。

捕获分组,加入() :re=/(\d+)([a-z])/;
非捕获分组,加入?: :re=/(\d+)(?:[a-z])/;

候选|
re=/(if|else) \d/; 匹配if 3 或else 5

嵌套分组:
(A?(B?(C?)))
多外往内产生三个分组。


反向引用
re=/(\d+)-(\d+)/;
s="12-34";
s.replace(re,"$2-$1");

re=/(\w+)\s\1/;
匹配go go或how how等。


正向前瞻:?=
re=/([a-z]+)(?=\s+8\.10)/gi;
s="Ubuntu 8.10";
s.replace(re,'Redtub') //结果为Redtub 8.10

负向前瞻:?!
re=/([a-z](?!\d))/i;
str="abc 1 one";
re.test(str);
alert(RegExp.$1);  //结果为one

一个复杂的例子:
构建一个验证电子邮箱地址有效性的正则表达式。电子邮箱地址有效性要求:用户名只能包含
字母数字以及下划线,最少一位,最多15位,用户名后面紧跟@,后面是域名,域名名称要求只
能包含字母数字和(-),并且不能以减号开头和结尾,然后后面是域名后缀(可以有多个),
域名后缀必须是点号连上2-4位英文字母。
var re=/^\w{1,15}(?:@(?!-))(?:(?:[a-z0-9-]*(?:[a-z0-9](?!-))(?:\.(?!-))))+[a-z]{2,4}$/;

  

posted @ 2011-08-16 19:11  水之原  阅读(3726)  评论(1编辑  收藏