1 string对象
length属性,string对象只有一个属性length。它反映了字符串中字符数量的整数值。
string(字符串) 对象的方法:
anchor() 建立一个 HTML 锚记。
big() 用大号字体显示字符串。
blink() 显示闪烁的字符串,IE 不支持此方法。
bold() 使用粗体显示字符串。
charAt() 返回在指定位置的字符。 从0开始算。
charCodeAt() 返回指定位置字符的 Unicode 编码。
concat() 连接字符串。
fixed() 以打字机文本显示字符串。
fontcolor() 使用指定的颜色来显示字符串。
fontsize() 使用指定的尺寸来显示字符串。
fromCharCode() 获取指定的 Unicode 值并返回字符串。
indexOf() 返回字符串中第一个出现指定字符串的位置,没有则返回-1。对于中文也一样
italics() 使用斜体显示字符串。
lastIndexOf() 返回字符串中最后个出现指定字符串的位置,搜索方向是向后的。
length属性 返回字符串个数。
link() 将字符串显示为链接。
match() 在字符串中查找指定值。
replace() 将字符串中的某些字符替换成其它字符。
search() 针对某执行值对字符串进行查找。
slice() 将部分字符抽出并在新的字符串中返回剩余部分。
small() 使用小字号来显示字符串。
split() 把字符串分割为字符串数组。
strike() 字符串以删除的形式显示。
sub() 把字符串显示为下标。
substr(start,length) 从字符串start开始抽取指定数length的字符串(从索引是从0开始),如何省略length则表示从字符串start开始到结尾。
substring(start[,end]) 抽取字符串中从start开始到end之前的子串(从索引是从0开始)。
sup() 把字符串显示为上标。
toLowerCase() 把字符串转换为小写。对于中文,数字等非字母转换后仍为不变
toUpperCase() 把字符串转换为大写。 对于中文,数字等非字母转换后仍为不变
toSource() 显示对象的源代码。IE 不支持此方法。
valueOf() 返回字符串对象的原始值。
例如:document.write(sample.big().blink().bold());
split()方法将一个字符串分解成一个数组对象。
stringObject.split(separator,howmany);//separator是必须的,从该参数指定的地方分割。
howmany是可选,该参数可指定返回的数组的最大长度。
var array=v.split("|");
for(var i=0;i<array.length;i++){
if(array[i]!=‘‘){
$("#haveselect").append("<option title=‘"+array[i]+"‘ value=‘"+array[i]+"‘>"+array[i]);
}}}
var tt=","
alert(tt.split(",").length);//结果为2个
join()方法用于把数组中的所有元素放入一个字符串。
arrayObject.join(separator);//separator可选,指定要使用的分隔符,默认为逗号。
检查输入是否为数字
function checkNum(str){
var Letters="1234567890";
for(i=0;i<str.length;i++){
var checkChar=str.charAt(i);
if(Letters.indexOf(checkChar)==-1){
return false;
}else{
return true;
}
检查两个字符串是否相等
不区分大小写的方法:
function checkEqual(str1,str2){
if(str1.toUpperCase().indexOf(str2.toUpperCase())==0&&str2.toUpperCase().indexOf(str1.toUpperCase())==0){
return true;
}else{
return false;
}
}
直接使用==进行比较字符串,是区别大小写的。可以用==比较中文字符
搜索与替换函数的源代码
function space(check){
var space=".,/<>?!‘;:@#$%^&*()=|-[]{}"+‘"‘+"\\\n\t";
for(var i=0;i<space.lenth;i++){
if(check==space.chatAt(i)){return.true;}
if(check==""){return true;}
if(check==null){return true;}
return false;
}
space()函数判断字前面以及字后面的字符是否为字的断点,如果不是,将next更新为所找到项后面的字符索引,然后再开始循环。
function replace(target,oldTerm,newTerm,caseSens,wordOnly){
var work=target;
var ind=0;
var next=0;
if(!caseSens){
oldTerm=oldTerm.toLowerCase();
work=target.toLowerCase();
}
while((ind=work.indexOf(oldTerm,next))>=0}{
if(wordOnly){
var before=ind-1;
var after=ind+oldTerm.length;
if(!(space(work.charAt(before))&&(space(work,charAt(after)))){
next=ind+oldTerm.length;
continue;
}}
target=target.substring(0,ind)+newTerm+target.substring(ind+oldTerm.length,target.length);
work=work.substring(0,ind)+newTerm+work.substring(ind+oldTerm.length.work.length);
next=ind+newTerm.length;
if(next>=work.length){break;}
}
return target;
}
replace()函数有5个变元,要处理的字符串,搜索项,用于替换的项以及2个布尔值。这两个布尔值分别表示搜索时是否考虑字符的大小写以及是否只查找整个字。
function search(target,term,caseSens,wordOnly){
var ind=0;
var next=0;
if(!caseSens){
term=term.toLowerCase();
target=target.toLowerCase();
}
while((ind=target.indexOf(term,next))>=0){
if(wordOnly){
var before=ind-1;
var after=ind+term.length;
if(!(space(target.charAt(before))&&space(target.charAt(after)))){
next=ind+ter.length;
continue;
}
}
return true;
}
return false;
}
Javascript的starwith和endwith实现
String.prototype.startWith=function(str){
var reg=new RegExp("^"+str);
return reg.test(this);
}
String.prototype.endWith=function(str){
var reg=new RegExp(str+"$");
return reg.test(this);
}
2JavaScript Math(数学)对象
Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math(),像 Math.sin() 这样的函数只是函数,不是某个对象的方法。
Math(数学) 对象的方法
方法 描述
abs(x) 返回数字的绝对值
acos(x) 返回数字的反余弦值
asin(x) 返回数字的反正弦值
atan(x) 返回位于 -PI/2 和 PI/2 的反正切值
atan2(y,x) 返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)
ceil(x) 对一个数进行上舍入取整。
cos(x) 返回一个数字的余弦值
exp(x) 返回 e 的指数。
floor(x) 对一个数进行下舍入取整。
log(x) 返回底数为 e 的自然对数
max(x,y) 返回 x 和 y 之间较大的数
min(x,y) 返回 x 和 y 之间较小的数
pow(x,y) 返回 x 的 y 次幂
random() 返回 0 ~ 1 之间的随机数
round(x) 四舍五入后取整
sin(x) 返回数的正弦值
sqrt(x) 返回数的平方根
tan(x) 返回一个角度的正切值
toSource() 显示对象的源代码,这个方法在IE中无效。
valueOf() 返回一个 Math 对象的原始值
Math(数学) 对象的属性
属性 描述
constructor 对创建此对象的函数的引用
E 常量 e,自然对数的底数 (约等于2.718)
LN2 返回 2 的自然对数(约等于0.693)
LN10 返回 10 的自然对数(约等于2.302)
LOG2E 返回以 2 为底的 e 的对数 (约等于 1.414)
LOG10E 返回以 10 为底的 e 的对数 (约等于0.434)
PI 返回圆周率 (约等于3.14159)
prototype 可为对象加入的属性和方法
SQRT1_2 返回 1/2 的平方根 (约等于 0.707)
SQRT2 返回 2 的平方根 (约等于 1.414)
javascript属于松散类型的编程语言,当建立变量时,没有定义字面量或变量的类型,而且类型能根据上下文随时改变。Javascript已经增加了parseInt()和parseFloat()函数,这两个函数分别用来将字符串转变成整数或浮点数。
totring()将数值转换为字符串。
var x=100
a = x.toString()
3history对象
history对象可用属性与方法:
length,历史清单的长度。
back(),在历史清单中加载前1个URL
forward(),在历史清单中加载下1个URL
go(),加载相对于历史清单当前位置的偏移量表示的URL。例:history.go(2)在清单中进入后面的2个URL。取值-1表示后退一个。
history.go(1);不让页面后退
4Date对象
脚本浏览器包含一个全局的Date对象。var today=new Date();
Date对象的实例值是时间,以毫秒为单位,从格林威治标准时间时区1970年1月1日开始计算。
可在Date对象构造函数中通过特定的日期和时间作为参数:
var someDate=new Date("Month dd,yyyy hh:mm:ss")
var someDate=new Date("Month dd,yyy");
var someDate=new Date(yy,mm,dd,hh,mm,ss)
var someDate=new Date(yy,mm,dd)
var someDate=new Date(milliseconds form 1/1/1970)
Date(日期) 对象的方法
方法 描述
Date() 返回当天的日期和时间
getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)
getMonth() 从 Date 对象返回月份 (0 ~ 11)
getFullYear() 从 Date 对象以四位数字返回完整年份
getYear() 从 Date 对象以两位或四位数字返回年份。
getHours() 返回 Date 对象的小时数 (0 ~ 23)
getMinutes() 返回 Date 对象的分钟数 (0 ~ 59)
getSeconds() 返回 Date 对象的秒数 (0 ~ 59))
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)
getTime() 返回 1970 年 1 月 1 日到现在一共花去的毫秒数
getTimezoneOffset() 返回本地时间与格林威治标准时间的分钟差 (GMT)
getUTCDate() 根据世界时间从 Date 对象返回月中的某一天 (1 ~ 31)
getUTCDay() 根据世界时从 Date 对象返回周中的某一天也就是星期几 (0 ~ 6)
getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)
getUTCFullYear() 根据世界时从 Date 对象返回四位数的完整年份
getUTCHours() 根据世界时返回 Date 对象的小时数 (0 ~ 23)
getUTCMinutes() 根据世界时返回 Date 对象的分钟数 (0 ~ 59)
getUTCSeconds() 根据世界时返回 Date 对象的秒数 (0 ~ 59)
getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒数 (0 ~ 999)
Date.parse(datestring) 返回1970年1月1日午夜到指定日期(字符串)的毫秒数 .datestring是表示日期和时间的字符串。例如:var d = Date.parse("Jul 8, 2005")或者Date.parse(new Date())
setDate() 设置 Date 对象中月的某一天也就是日期号 (1 ~ 31))
setMonth() 设置 Date 对象中月份 (0 ~ 11))
setFullYear() 设置 Date 对象中的年月日,其中月的取值是0~11。
setYear() 设置 Date 对象中的年份(两位或四位数字)。
setHours() 设置 Date 对象中的小时数 (0 ~ 23)
setMinutes() 设置 Date 对象中的分钟数 (0 ~ 59)
setSeconds() 设置 Date 对象中的秒数 (0 ~ 59)
setMilliseconds() 设置 Date 对象中的毫秒数 (0 ~ 999)
setTime() 通过向或从1970年1月1日午夜添加或减去指定数目的毫秒来计算日期和时间
setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)
setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)
setUTCFullYear() 根据世界时设置 Date 对象中年份(四位数字)
setUTCHours() 根据世界时设置 Date 对象中的小时数 (0 ~ 23)
setUTCMinutes() 根据世界时设置 Date 对象中的分钟数 (0 ~ 59)
setUTCSeconds() 根据世界时设置 Date 对象中的秒数 (0 ~ 59)
setUTCMilliseconds() 根据世界时设置 Date 对象中毫秒数(0 ~ 999)
toSource() 显示对象的源代码。这个方法不能在IE中工作!
toString() 把 Date 对象转换为字符串。
toTimeString() 把 Date 对象的时间部分转换为字符串。
toDateString() 把 Date 对象的日期部分转换为字符串。
toGMTString() 根据格林威治时间,把 Date 对象转换为字符串。可以使用 toUTCString() 替代这种方法。
toUTCString() 根据世界时,把 Date 对象转换为字符串。
toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。
toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串
toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串
UTC() 根据世界时,将日期计算为从1970年1月1日午夜至今所经过的时间(单位:毫秒)。
valueOf() 返回 Date 对象的原始值。
Date对象的构造函数:
new Date()
new Date(milliseconds)
new Date(datestring)
new Date(year, month)
new Date(year, month, day)
new Date(year, month, day, hours)
new Date(year, month, day, hours, minutes)
new Date(year, month, day, hours, minutes, seconds)
new Date(year, month, day, hours, minutes, seconds, microseconds)
Date对象的构造函数参数说明:
milliseconds - 距离JavaScript内部定义的起始时间1970年1月1日的毫秒数
datestring - 字符串代表的日期与时间。此字符串可以使用Date.parse()转换
year - 四位数的年份,如果取值为0-99,则在其之上加上1900
month - 0(代表一月)-11(代表十二月)之间的月份
day - 1-31之间的日期
hours - 0(代表午夜)-23之间的小时数
minutes - 0-59之间的分钟数
seconds - 0-59之间的秒数
microseconds - 0-999之间的毫秒数
Date对象的构造函数返回值
如果没有任何参数,将返回当前日期
如果参数为一个数字,将数字视为毫秒值,转换为日期
如果参数为一个字符串,将字符串视为日期的字符串表示,转换为日期
还可以使用六个构造函数精确定义,并返回时间
例如:下面的几种将string转换为Date对象都是正确的。
var d="2003/01/03";
alert(date.toString());
var d2 = new Date("2009-08-08");
document.write(d2.toString());
var d3 = new Date(2009, 8, 8);
document.write(d3.toString());
alert(d2.replace(/-/g, "/"));//将d2转换为"2009/08/08"
把一个日期字符串如"2007-2-28 10:18:30"转换为Date对象:
第一种方法
var strArray=str.split(" ");
var strDate=strArray[0].split("-");
var strTime=strArray[1].split(":");
var a=new Date(strDate[0],(strDate[1]-parseInt(1)),strDate[2],strTime[0],strTime[1],strTime[2])
第二种方法
var s = "2005-12-15 09:41:30";
var d = new Date(Date.parse(s.replace(/-/g, "/")));
将"2005-12-15 09:41:30"转换为"2005/12/15 09:41:30"就可以使用new Date(datestring)构造函数创建Date对象。
按照指定的格式将日期对象转换为字符串
function date2str(x,y) {
var z = {M:x.getMonth()+1,d:x.getDate(),h:x.getHours(),m:x.getMinutes(),s:x.getSeconds()};
y = y.replace(/(M+|d+|h+|m+|s+)/g,function(v) {return ((v.length>1?"0":"")+eval(‘z.‘+v.slice(-1))).slice(-2)});
return y.replace(/(y+)/g,function(v) {return x.getFullYear().toString().slice(-v.length)});
}
//下面两句都将输出2012-12-12 17:18:49
alert(date2str(new Date(),"yyyy-MM-dd hh:mm:ss"));
alert(date2str(new Date(),"yyyy-M-d h:m:s"));
创建日期对象
我们为日期对象设置了一个特定的日期 (2008 年 8 月 9 日):
var myDate=new Date()
myDate.setFullYear(2008,7,9)
比较日期对象:
var myDate=new Date();
myDate.setFullYear(2008,7,9);
var today = new Date();
if (myDate>today)
{
alert("Today is before 9th August 2008");
}
else
{
alert("Today is after 9th August 2008");
将2005-8-5转换成2005-08-05格式
<script language="javascript">
var strDate = ‘2005-8-5‘;
window.alert(strDate.replace(/\b(\w)\b/g, ‘0$1‘));
</script>
得到间隔天数
<script type="text/javascript">
<!--
alert("间隔天数为:"+(new Date(‘2005/8/15‘)-new Date(‘2003/9/18‘))/1000/60/60/24+"天")
//-->
</script>
得到间隔时间
<script>
var d1=new Date("2004/09/16 20:08:00");
var d2=new Date("2004/09/16 10:18:03");
var d3=d1-d2;
var h=Math.floor(d3/3600000);
var m=Math.floor((d3-h*3600000)/60000);
var s=(d3-h*3600000-m*60000)/1000;
alert("相差"+h+"小时"+m+"分"+s+"秒");
</script>
字符串转换为日期
var s = "2005-12-15 09:41:30";
var d = new Date(Date.parse(s.replace(/-/g, "/")));
DateStr = "2008-08-08";
var arys= DateStr.split(‘-‘);
var d = new Date(arys[0], arys[1], arys[2]);
或者
var d = new Date(Date.parse(DateStr.replace(/-/g,"/")));
**********************************************
修改js Date对象添加年月日:
//重写toString方法,将时间转换为Y-m-d H:i:s格式
Date.prototype.toString = function(){
return this.getFullYear() + "-" + (this.getMonth()+1) + "-" + this.getDate() + " " + this.getHours() + ":" + this.getMinutes() + ":" + this.getSeconds();
}
//格式化时间字符串
Date.prototype.toFormatString = function(format){
if(format == ""){
return this.toString();
}
var str = ‘‘;
str = format.replace(/Y|y/,this.getFullYear())
.replace(/M|m/,this.getMonth() + 1)
.replace(/D|d/,this.getDate())
.replace(/H|h/,this.getHours())
.replace(/I|i/,this.getMinutes())
.replace(/S|s/,this.getSeconds());
return str;
}
//在当前时间上添加年数
Date.prototype.addYear = function(years){
var cyear = this.getFullYear();
cyear += years;
this.setYear(cyear);
return this;
}
//在当前时间上添加天数
Date.prototype.addDay = function(days){
var cd = this.getDate();
cd += days;
this.setDate(cd);
return this;
}
//在当前时间上添加月数
Date.prototype.addMonth = function(months){
var cm = this.getMonth();
cm += months;
this.setMonth(cm);
return this;
}
******************************************
5JavaScript Number 对象
在 JavaScript 中,数字是一种基本的数据类型。
JavaScript 支持 Number 对象,该对象是原始数值的包装对象。
在必要时,JavaScript 会自动地在原始数据和对象之间转换。
构造函数 Number() 可以不与运算符 new 一起使用,而直接作为转化函数来使用。以这种方式调用 Number() 时,它会把自己的参数转化成一个数字,然后返回转换后的原始 数值(或 NaN)。
Number 对象的方法
方法 描述
toString 把数字转换为字符串,使用指定的基数。
toLocaleString 把数字转换为字符串,使用本地数字格式顺序。
toFixed 把数字转换为字符串,结果的小数点后有指定位数的数字。注意toFixed返回的是字符串
toExponential 把数字转换为字符串,结果采用指数表示法,小数点后有指定位数的小数。
toPrecision 把数字转换为字符串,结果为小数表示法或指数表示法。由数字的大小和指定的有效数字位数决定采用哪种方法。
valueOf 返回一个 Number 对象的基本数字值
JS浮点数运算Bug的解决办法:
第一种如果在知道小数位个数的前提下,可以考虑通过将浮点数放大倍数到整型(最后再除以相应倍数),再进行运算操作,这样就能得到正确的结果了
<script>
alert(11*(22.9*10)/10);
</script>
第二种重写运算方法
除法:
function div(num1,num2){
var reg = /\./i;
if(!reg.test(num1) && !reg.test(num2)){
return num1 * num2;
}
var len1 = 0, len2 = 0;
var str1 = num1.toString(), str2 = num2.toString();
//计算位数差
if(str1.indexOf(‘.‘)>-1){
len1 = str1.split(‘.‘)[1].length;
}
if(str2.indexOf(‘.‘)>-1){
len2 = str2.split(‘.‘)[1].length;
}
return mul(Number(str1.replace(‘.‘,‘‘)) / Number(str2.replace(‘.‘,‘‘)),Math.pow(10,len2-len1));
}
加法:
function add(num1,num2){
var reg = /\./i;
if(!reg.test(num1) && !reg.test(num2)){
return num1 * num2;
}
var r1 = 0, r2 = 0, m;
var str1 = num1.toString(), str2 = num2.toString();
if(str1.indexOf(‘.‘)>-1){
r1 = str1.split(‘.‘)[1].length;
}
if(str2.indexOf(‘.‘)>-1){
r2 = str2.split(‘.‘)[1].length;
}
m = Math.pow(10,Math.max(r1,r2));
return (mul(num1,m) + mul(num2,m)) / m;
}
乘法:
function mul(num1,num2){
var reg = /\./i;
if(!reg.test(num1) && !reg.test(num2)){
return num1 * num2;
}
var len = 0, str1 = num1.toString(), str2 = num2.toString();
if(str1.indexOf(‘.‘)>=0){
len += str1.split(‘.‘)[1].length;
}
if(str2.indexOf(‘.‘)>=0){
len += str2.split(‘.‘)[1].length;
}
return Number(str1.replace(‘.‘,‘‘)) * Number(str2.replace(‘.‘,‘‘)) / Math.pow(10,len);
}
保修小数点后多少位,并四舍五入。
Number.prototype.toFixed=function(len)
{
var add = 0;
var s,temp;
var s1 = this + "";
var start = s1.indexOf(".");
//截取小数点后,0之后的数字,判断是否大于5,如果大于5这入为1
if(start>=0 && s1.substr(start+len+1,1)>=5)add=1;
var temp = Math.pow(10,len);
s = Math.floor(this * temp) + add;
return s/temp;
}
arguments
在函数代码中,使用特殊对象arguments,开发者无需指出参数名,就能访问他们。如:
在函数sayHi()中,第一个参数是message,用arguments[0]也可以访问这个值,即第一个参数的值是位于0,第二个参数的值是位于1。
还可以用arguments对象检测传递给函数的参数个数,引用属性 函数名.arguments.length即可。
escape()函数
escape(string)函数可以对字符串进行编码,这样可以在所有计算机上读取该字符串,escape方法会将传入参数中的所有空格,标点符号,重音字符以及其其它任何非ASCII字符转换为%xx的编码形式,这些特殊的字符需要unescape()方法才能解码出来。
unescape()函数是对escape()编码的字符串进行解码。
例如:
<html>
<head>
<title>数组</title>
<script language="javascript">
<!--
function test(){
var m=escape("hebinbin*& %");
document.writeln(m);
document.write(unescape(m));
}
//-->
</script>
</head>
<body onLoad="test();">
</body>
</html>
7setInterval与setTimeout
语法:setInterval(function名,interval[,arg1,arg2,..])
function指要调用的方法。
interval是制定的对function调用两次之间的时间,单位是毫秒。
arg1等可选参数是制定传递给function的参数。
语法:setTimeout(function名,timeout[,arg1,arg2,..])
间隔timeout毫秒后执行一次函数function。
最好使用setTimeout。
milliseconds是毫秒。它们会返回一个ID是标识符,用于在运行表达式之前取消setTimeout()。
clearTimeout(ID)需要传送1个变元,即要取消超时设置的标识符。使用了clearTimeout后到指定的时间就不会执行函数了。
setTimeout("test()",1000);
也可以这样:
setTimeout(test,1000);
如果要传递参数应该向下面这样,P3_M12_LastDot是一个变量对象,‘contraction‘是字符串:
P3_M12_OneHalf=setTimeout("showDataTip(P3_M12_LastDot)",1500);
setTimeout("showPressureDataTip(P3_M81_LastDot,‘contraction‘)",1500);
setInterval在执行完一次代码之后,经过了那个固定的时间间隔,它还会自动重复执行代码,而setTimeout只执行一次那段代码。
setTimeout(function(){....},100);
***************
javascript解析url中?后面带的键值对
window.onload=function(){
var name=Array();
var values=Array();
var star=window.location.search;
get = star.substr(1);
getarr=get.split("&");
for(i=0;i<getarr.length;i++)
{
slit = getarr[i].split("=");
name[i] = slit[0];
values[i] = slit[1];
}
//这样name[]数组中存储的是所有的键,values[]数组中存储的是所有的值。
for(f=0;f<name.length;f++){
alert(name[f]);
}
}
**********************
replace()函数还可以跟上正则表达式将匹配正则表达的字符串替换为另一个字符串。例如将去除字符串中所有的空白字符。
$("#qq").val().replace(/(\s)/g,"");
JS截取字符串的前后空格
function tiannetTrim(str) {
return str.replace(/(^\s*)|(\s*$)/g,"");
}
replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
stringObject.replace(regexp,replacement)
regexp,必需。规定了要替换的模式的 RegExp 对象。请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。
replacement,必需。一个字符串值。规定了替换文本或生成替换文本的函数。
一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。
字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。
replacement 可以是字符串,也可以是函数。如果它是字符串,那么没有匹配都将由字符串替换。但是 replacement 中的 $ 字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。
$1、$2、...、$99 与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。
$& 与 regexp 相匹配的子串。
$` 位于匹配子串左侧的文本。
$‘ 位于匹配子串右侧的文本。
$$ 直接量符号。
注意:ECMAScript v3 规定,replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。
例如:
<script type="text/javascript">
var str="Visit Microsoft!"
document.write(str.replace(/Microsoft/, "W3School"))
</script>
结果为:
Visit W3School!
<script type="text/javascript">
var str="Welcome to Microsoft! "
str=str + "We are proud to announce that Microsoft has "
str=str + "one of the largest Web Developers sites in the world."
document.write(str.replace(/Microsoft/g, "W3School"))
</script>
结果为:
Welcome to W3School! We are proud to announce that W3School
has one of the largest Web Developers sites in the world.
我们将把 "Doe, John" 转换为 "John Doe" 的形式:
name = "Doe, John";
name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");