<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 正则表达式的基本方法,如果你看会了看复杂的正则你会有豁然开朗的感觉。