好好学一遍JavaScript 笔记(七)——RegExp对象与常用正则
javaScript RegExp对象:
global——Boolean值、表示g(全局选项)是否已设置
ignoreCase——Boolean值、表示i(忽略大小写选项)是否已设置
lastIndex——整数、代表下次匹配将会从哪个字符位置开始(只有当使用exec()或test()函数才会填入、否则为0)
multiline——Boolean值、表示m(多行模式选项)是否已设置
source——正则表达式的源字符串形式。例如、表达式/[ba]*/的source将返回"[ba]*"。
一般不会使用global、ignoreCase、multiline和source属性、因为一般之前就已知道了这些数据。
真正有用的属性是lastIndex、它可以告诉你正则表达式在某个字符串中停止之前、查找了多远。
[javascript]
var sToMatch = "bbq is short for barbecue";
var reB = /b/g;
reB.exec(sToMatch);
alert(reB.lastIndex); //out: 1
reB.exec(sToMatch);
alert(reB.lastIndex); //out: 2
reB.exec(sToMatch);
alert(reB.lastIndex); //out: 18
reB.exec(sToMatch);
alert(reB.lastIndex); //out: 21
正则表达式reB查找的是b。当它首次检测sToMatch时、
它发现在第一个位置——也就是位置0——是b;
因此、lastIndex属性就被设置成1、
而再次调用exec()时就从这个地方开始执行。
再次调用exec()、表达式在位置1又发现了b、
于是将lastIndex设值为2.第三次调用时、发现b在位置17、
于是又将lastIndex设值为18、如此继续。
如果想从头开始匹配、则可以将lastIndex设为0。
静态属性:
[javascript]
/**
* 它们都有两个名字:一个复杂名字和一个以美元符号开头的简短名字。
* 长名 短名 描述
* input $_ 最后用于匹配的字符串(传递给exec()或test()的字符串)
* lastMatch <span><span class="comment">$&</span></span> 最后匹配的字符
* lastParen $+ 最后匹配的分组
* leftContext $` 在上次匹配的前面的子串
* multiline $* 用于指定是否所有表达式都使用多行模式的布尔值
* rightContext $' 在上次匹配之后的子串
*/
var sToMatch = "古道西风瘦马、夕阳西下、断肠人在天涯!";
var reB = /(西)风/g;
reB.test(sToMatch);
alert(RegExp.$_); //out:古道西风瘦马、夕阳西下、断肠人在天涯!
alert(RegExp.leftContext); //out:古道
/*
* 使用短名时有些字符是不合法的需要使用[]
相关新闻>>
- 发表评论
-
- 最新评论 更多>>