<script language="JavaScript"> 
<!-- 
/*正则表达式 候选 */ 
var sToMatch1 = "red"; 
var sToMatch2 = "black"; 
var reRed = /red/; 
var reBlack = /black/; 
alert(reRed.test(sToMatch1) || reBlack.test(sToMatch1)); 
alert(reRed.test(sToMatch2) || reBlack.test(sToMatch2)); 
/* 
这虽然能完成任务,但是十分沉长,还有另一种方式就是正则表达式的候选操作符。 
*/ 
var sToMatch1 = "red"; 
var sToMatch2 = "black"; 
var reRedOrBlack = /(red|black)/; 
alert(reRedOrBlack.test(sToMatch1)); 
alert(reRedOrBlack.test(sToMatch2)); 
//--> 
</script> 
5 非捕获性分组
复制代码 代码如下:
 
<script language="JavaScript"> 
<!-- 
/*正则表达式 非捕获性分组 
如果要创建一个非捕获性分组,只要在左括号的后面加上一个问号和一个紧跟的冒号: 
*/ 
var sToMatch = "#123456789"; 
var reNumbers = /#(?:\d+)/; 
reNumbers.test(sToMatch); 
alert(RegExp.$1); 
/* 
这个例子的最后一行代码输出一个空字符串,因为该组是非捕获性的, 
*/ 
var sToMatch = "#123456789"; 
var reNumbers = /#(?:\d+)/; 
alert(sToMatch.replace(reNumbers,"abcd$1")); 
/* 
正因如此,replace()方法就不能通过 RegExp.$x 变量来使用任何反向引用,这段代码 
输出的“abcd$1”而不是abcd123456789, 因为$1 在这里并不被看成是一个反向引用。 
*/ 
//--> 
</script> 
6 前瞻
复制代码 代码如下:
 
<script language="JavaScript"> 
<!-- 
/*正则表达式 前瞻 
前瞻 就和它名字一样,它告诉正则表达式运算器向前看一些字符而不是移动位置 
*/ 
var sToMatch1 = "bedroom"; 
var sToMatch2 = "bedding"; 
var reBed = /bed(?=room)/; 
alert(reBed.test(sToMatch1)); //true 
alert(reBed.test(sToMatch2)); //false 
//负向前瞻 
var sToMatch1 = "bedroom"; 
var sToMatch2 = "bedding"; 
var reBed = /bed(?!room)/; 
alert(reBed.test(sToMatch1)); //false 
alert(reBed.test(sToMatch2)); //true 
//--> 
</script> 
7 边界
复制代码 代码如下:
 
<script language="JavaScript"> 
<!-- 
/*正则表达式 边界 
^ 行开头 
$ 行结尾 
\b 单词的边界 
\B 非单词的边界 
*/ 
var sToMatch = "Important word is the last one."; 
var reLastWord = /(\w+)\.$/; 
reLastWord.test(sToMatch); 
alert(RegExp.$1); //one 
/* 
假如想查找一个单词,但要它只出现在行尾,则可以使用美元符号 ($)来表示它: 
*/ 
var sToMatch = "Important word is the last one."; 
var reLastWord = /^(\w+)/; 
reLastWord.test(sToMatch); 
alert(RegExp.$1); //Important 
/* 
在这个例子中,正则表达式查找行起始位置后的一个或多个单词字符。如果遇到非单词字符 
匹配停止,返回 Important。 这个例子也可以用单词边界实现。 
*/ 
var sToMatch = "Important word is the last one."; 
var reLastWord = /^(.+?)\b/; 
reLastWord.test(sToMatch); 
alert(RegExp.$1); //Important 
/* 
这里,正则表达式用惰性量词来制定在单词边界之前可以出现任何字符,且可以出现一次或 
多次(如果使用贪婪性量词,表达式就匹配整个字符串)。 
*/ 
var data = " First second thind fourth fifth sixth "; 
var reCat = /\b(\S+?)\b/g; 
var arrdata = data.match(reCat); 
for (var i = 0; i < arrdata.length; i++) 
{ 
alert(arrdata[i]); 
} 
/* 
使用单词边界可以方便地从字符串中抽取单词。 
*/ 
//--> 
</script> 
8 多行模式
Code
复制代码 代码如下:
 
<script language="JavaScript"> 
<!-- 
/*正则表达式 多行模式 
要制定多行模式,只要在正则表达式想要匹配的行末的一个单词 
*/ 
var data = " First second\n thind fourth\n fifth sixth"; 
var reCat = /(\w+)$/g; 
var arrdata = data.match(reCat); 
for (var i = 0; i < arrdata.length; i++) 
{ 
alert(arrdata[i]); 
} 
/* 
上面只返回一个单词 sixth,因为换行符阻挡了匹配,只能匹配行末的一个单词, 
当然也可以使用 split() 方法将字符串分割成数组,但就得对每一行进行单独匹配。 
以前不好好看书经常半吊子,看一半就仍了,导致用了好多 split, 其实很简单如下面 
例子 只需要 m 参数进行多行匹配。 
*/ 
var data = " First second\n thind fourth\n fifth sixth"; 
var reCat = /(\w+)$/gm; 
var arrdata = data.match(reCat); 
for (var i = 0; i < arrdata.length; i++) 
{ 
alert(arrdata[i]); 
} 
//--> 
</script> 
至此结束,这些都是 javascript 正则表达式的基本方法,如果你看会了看复杂的正则你会有豁然开朗的感觉。
