jsreplace与replaceall实例⽤法详解
参数
stringObj
必选项。要执⾏该替换的 String 对象或字符串⽂字。该字符串不会被 replace ⽅法修改。
rgExp
必选项。为包含正则表达式模式或可⽤标志的正则表达式对象。也可以是 String 对象或⽂字。如果 rgExp 不是正则表达式对象,它将被转换为字符串,并进⾏精确的查;不要尝试将字符串转化为正则表达式。
replaceText
必选项。是⼀个String 对象或字符串⽂字,对于stringObj 中每个匹配 rgExp 中的位置都⽤该对象所包含的⽂字加以替换。在 Jscript 5.5 或更新版本中,replaceText 参数也可以是返回替换⽂本的函数。
说明
js 正则替换 replace ⽅法的结果是⼀个完成了指定替换的 stringObj 对象的复制。
下⾯任意的匹配变量都能⽤来识别最新的匹配以及出匹配的字符串。在需要动态决定替换字符串的⽂本替换中可以使⽤匹配变量。
字符含义
$$ $ (JScript 5.5 或更新版本)
$& 指定与整个模式匹配的 stringObj 的部分。 (JScript 5.5 或更新版本)
$` 指定由 $& 描述的匹配之前的 stringObj 部分。 (JScript 5.5 或更新版本)
$' 指定由 $& 描述的匹配之后的 stringObj 部分。 (JScript 5.5 或更新版本)
$n 捕获的第 n 个⼦匹配,此处 n 为从1到9的⼗进制⼀位数。 (JScript 5.5 或更新版本)
$nn 捕获的第 nn 个⼦匹配,此处 nn 为从01到99的⼗进制两位数。 (JScript 5.5 或更新版本)
如果 replaceText 为函数,对于每⼀个匹配的⼦字符串,调⽤该函数时带有下⾯的 m+3 个参数,此处 m 是在 rgExp 中捕获的左括弧的个数。第⼀个参数是匹配的⼦字符串。接下来的 m 个参数是查中捕获的全部结果。第 m+2 个参数是在stringObj 中匹配出现的偏移量,⽽第 m+3 个参数为 stringObj。结果为将每⼀匹配的⼦字符串替换为函数调⽤的相应返回值的字符串值。
Replace ⽅法更新全局 RegExp 对象的属性。
⽰例
下⾯的⽰例演⽰了 replace ⽅法将第⼀次出现的单词 "The" 替换为单词 "A" 的⽤法。
复制代码代码如下:
function ReplaceDemo(){
var r, re; // 声明变量。
var ss = "The man hit the ball with the bat.n";
ss += "while the fielder caught the ball with the glove.";
re = /The/g; // 创建正则表达式模式。
r = ss.replace(re, "A"); // ⽤ "A" 替换 "The"。
return(r); // 返回替换后的字符串。
}
另外, replace ⽅法也可以替换模式中的⼦表达式。下⾯的范例演⽰了交换字符串中的每⼀对单词:
function ReplaceDemo(){
var r, re; // 声明变量。
var ss = "The rain in Spain falls mainly in the plain.";
re = /(S+)(s+)(S+)/g; // 创建正则表达式模式。
r = ss.replace(re, "$3$2$1"); // 交换每⼀对单词。
return(r); // 返回结果字符串。
}
下⾯的⽰例(在 JScript 5.5 及更新版本中执⾏)执⾏的是从华⽒到摄⽒的转换,它演⽰了使⽤函数作为 replaceText。要想知道该函数是如何⼯作的,传递⼀个包含数值的字符串,数值后要紧跟 "F" (例如 "Water boils at 212")。
复制代码代码如下:
function f2c(s) {
var test = /(d+(.d*)?)Fb/g; // 初始化模式。
place
(test,
function($0,$1,$2) {
return((($1-32) * 5/9) + "C");
}
)
);
}
document.write(f2c("Water freezes at 32F and boils at 212F."));
js居然不提供replaceAll⽅法,⽤for循环⼜有效率问题,给你⼀个正则表达式的解决⽅案 js 代码
复制代码代码如下:
placeAll = function(s1,s2){
place(new RegExp(s1,"gm"),s2);
}
⽅法: place(new RegExp(oldString,"gm"),newString))
gm g=global, m=multiLine ,⼤致上⽅法就是这样的,可以实现替换全部指定字串 另⼀个简单的验证JS的⽅法:
在浏览器地址栏输⼊
javascript:alert("abcabcabc".replace(new RegExp("a","gm"),"ad"))
这样⽐较省事 ;) ,不知道多⾏的会不会很⽅便
place(new RegExp(findStr, 'g'), replaceStr)
应该就可以替换所有的了
如果不⽤正则表达式
place(findStr, replaceStr)只能替换第⼀个
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论