1'');
document.write(newStr);
输出的结果为:
bbs.bbs.bbs
首先,我们知道第一个子正则表达式匹配到了bbs,那么$1也就代表bbs了。其后我们把替换字符串设置为''$1.$1.$1'',其实也就是“bbs.bbs.bbs”。同理,$2就是blueidea,$3就是com。
在来看一个例子,颠倒空格前后两个单词的顺序。
复制代码 代码如下:
var reg = /(\w+)\s(\w+)/;
var str = ''cainiao gaoshou'';
var newStr = str.replace(reg,''$2 $1'');
document.write(newStr);
结果为:gaoshou cainiao,也就是空格前后的单词被调换顺序了。
由于在替换文本里$有了特殊的含义,所以我们如果想要是用$这个字符的话,需要写成$,例如:
复制代码 代码如下:
var reg = /(\w+)\s(\w+)/;
var str = ''cainiao gaoshou'';
var newStr = str.replace(reg,''$ $'');
document.write(newStr);
结果为:$ $。
search方法和split方法
同样,字符串的search方法和split方法中也可以使用正则表达式,形式如下:
str.search(reg);
search返回正则表达式第一次匹配的位置。例子:
复制代码 代码如下:
var reg = /idea/;
var str = ''blueidea'';
var pos = str.search(reg);
document.write(pos);
结果为4。
下面的例子找出第一个非单词字符:
复制代码 代码如下:
var reg = /\W/;
var str = ''bbs.blueidea.com'';
var pos = str.search(reg);
document.write(pos);
结果为3,也就是那个点“.”的位置。
复制代码 代码如下:
str.split(reg,''seprator'');
split返回分割后的数组,例如:
var reg = /\W/;
var str = ''bbs.blueidea.com'';
var arr = str.split(reg);
document.write(arr);
结果为:bbs,blueidea,com,可见数组被非单词字符分为了有三个元素的数组。
复制代码 代码如下:
var reg = /\W/;
var str = ''http://www.baidu.com/'';
var arr = str.split(reg);
document.write(arr.length+''<br />'');
document.write(arr);
结果为:
7
http,,,www,baidu,com,
可见字符串被分为了有7个元素的数组,其中包括了三个为空字符串的元素。