- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章js中string之正则表达式replace方法详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
replace方法是javascript涉及到正则表达式中较为复杂的一个方法,严格上说应该是string对象的方法。只不过牵扯到正则的时候比较多一些。需要我们灵活的使用.
语法: stringObj.replace(regexp/substr,replacement); 。
第一个参数:必需。字符串中要替换的子串或正则RexExp; 。
第二个参数:必需,一个字符串值,规定了替换文本或生成替换文本的函数.
返回值:注意它的返回值是一个新的字符串,并没有更改原有字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的.
所以根据它的参数的不同分为很多种情况,以下一一对各种情况加以分析:
NO.1 两个参数都是字符串 。
1
2
3
|
var
str1 =
'这是一段原始文本,需要替换的内容"这要替换"!'
;
var
newStr = str1.replace(
'这要替换'
,
'need replace'
);
console.log( newStr );
//输出: 这是一段原始文本,需要替换的内容"need replace"!
|
上面的例子中第二个参数字符串'need replace',替换掉了第一个参数字符串'这要替换'。这是最简单的一种形式.
NO.2 第一个参数是正则,第二个参数是字符串 。
1
2
3
|
var
str2 =
'这是一段原始文本,需要替换的内容"ac这要替换bb"!'
;
var
newStr = str2.replace( /([a-z])+/g,
'qqq'
);
console.log( newStr );
//输出: 这是一段原始文本,需要替换的内容"qqq这要替换qqq"!
|
上面的例子字符串'qqq',替换了正则匹配的内容。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串.
NO.3 第一个参数是正则,第二个参数是带$符的字符串 。
1
2
3
|
var
str3 =
'这是一段原始文本,"3c这要替换4d"!'
;
var
newStr = str3.replace( /([0-9])([a-z])/g,
"$1"
);
console.log( newStr );
//输出: 这是一段原始文本,"3这要替换4"!';
|
上面的例子,$1表示regexp中的第一个子表示即([0-9])匹配单个数字,同理若是$2则表示第二个子表示即([a-z]);所以,'3c'这个匹配到的整体被第一个子表示说表示的'3'替换,'4d'被第一个子表示匹配的数字'4'所替换。其他几个同理可得:
(/([0-9])([a-z])/g,”$2″)—>////输出: 这是一段原始文本,”c这要替换d”!'; (3c和4d被相应的第二个子表示匹配出来的c和d替换)(/([0-9])([a-z])/g,”$'”)—>////输出: 这是一段原始文本,”这要替换d”!这要替换”!”!'; (3c被3c右侧文本替换,4d右侧是”!替换,所以出现俩次) 。
NO.4 第一个参数是正则,第二个参数函数 。
1
2
3
4
5
6
7
8
9
|
var
str4 =
'这是一段原始文本,需要替换的内容"aa这要bbb替换ccccc"!'
;
var
newStr = str4.replace( /[a-z]+/g,
function
($0){
var
str =
''
;
for
(
var
i = 0; i < $0.length; i++) {
str +=
'*'
;
};
return
str;
} );
console.log( newStr );
//这是一段原始文本,需要替换的内容"**这要***替换*****"!
|
上面的例子函数的第一个参数为匹配的regexp的整体,根据长度函数返回值为相应替换的文本; 。
NO.5 第一个参数是正则且有子表达式,第二个参数函数且带有多个参数 。
1
2
3
4
5
6
7
8
|
var
str5 =
'这是一段原始文本,需要替换的内容"3c这要替换4d"!'
;
var
newStr = str5.replace( /([0-9])([a-z])/g,
function
(arg1,arg2,arg3,arg4,arg5){
console.log( arg1 );
console.log( arg2 );
console.log( arg3 );
console.log( arg4 );
console.log( arg5 );
} );
|
输出:
3c 3 c 17 这是一段原始文本,需要替换的内容"3c这要替换4d"! 4d 4 d 23 。
这是一段原始文本,需要替换的内容"3c这要替换4d"! 。
上面的例子第一个参数arg1表示匹配的整体,arg2表示第一个子表达式,arg3表示第二个子表达式,接下来的参数arg4是一个整数,声明了表示子匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身.
以上就是replace方法各种可能的情况。确实是一个需要深入理解的方法,不过确实也很强大的一个方法,值得深入研究! 。
原文链接:https://segmentfault.com/a/1190000008787668 。
最后此篇关于js中string之正则表达式replace方法详解的文章就讲到这里了,如果你想了解更多关于js中string之正则表达式replace方法详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在从一个旧数据库中选择数据,该数据库有一个滥用状态列。状态列中包含多条信息。值如“新联系人 YYYY”、“在线 YYYY”、“更新 YYYY”、“撤回 YYYY”等……。您可能已经猜到了,YYYY
我想使用ant的replace任务替换这样的文件之一中的 token : 版本.txt version.number=${versionNumber} build.gradle task writeV
sorted_elems 列表中有一些元素将被更改为 str 例如: sorted_elems = ['[abc]', '[xyz]', ['qwe']] 我想删除定义的字符 - [, ], ' 并打
如果替换在变量中传递,第一次和第二次替换是否等效? #!/usr/bin/env perl6 use v6; my $foo = 'switch'; my $t1 = my $t2 = my $t3
我正在做一个本地测试来比较 C# 中 String 和 StringBuilder 的 Replace 操作性能,但是对于 String 我使用了以下代码: String str = "String
我看到了所有内容,没有看到使用“--replace”的方式的内容。 如何在 wkhtmltopdf 中使用“--replace”。 请给我一个例子,谢谢。:) 最佳答案 假设您有一个页脚 my_foo
我需要在 50 多个文件中进行大量搜索/替换,并且正在使用 Sublime Text 3。 有没有办法逐步执行并交互确认每个更改?我不想要只执行所有替换的一揽子“全部替换”操作。 我正在思考 vi/v
那么“replace ”属性如何与 composer 一起使用? ?我已经阅读了 Composer 文档,但仍然不明白。搜索更多信息并没有回答我的问题。 当我查看Laravel/Framework上的
我在玩 F# 句法。 在瑞典,我们有一个游戏叫做“Backslang”(谷歌翻译自“Rövarspråk”) 规则很简单。你说的所有话都必须以特定的方式说出来。虽然人声是相同的,但每个辅音都必须用“o
是否可以在Atom或Sublime Text中对“item”一词使用“查找和替换”并将其替换为“item [i]”,其中[i]是从1开始的数字? 我有一堆看起来像这样的物品: item1 item1
我不太确定如何解释,所以我将从输出开始。我需要返回这个: { replies: [ { type: 'text', content: 'one' } { type:
我是 C# 的新手,所以请原谅我的错误。 我想在每次调用该段代码时(每次调用 2-4 次)替换字符串的某些部分。我想知道哪种方法在性能方面更好:string.Replace 或 stringBuild
我了解.Replace() 和-replace 之间的区别,但是什么是-replace 和[Regex]: :替换()? 我测试了以下 2 个代码,但对我来说结果完全一样。 我还引用了 PowerSh
如果我正在做类似的事情: someString.Replace("abc","").Replace("def","").Replace(@"c:\Windows","") 我怎样才能把它替换成 Reg
我是 C# 的新手,所以请原谅我的错误。 我想在每次调用该段代码时(每次调用 2-4 次)替换字符串的某些部分。我想知道哪种方法在性能方面更好:string.Replace 或 stringBuild
当我使用 call() 或 apply() 时,我遇到了问题。 console.log(String.prototype.replace === String.replace);//false 我认为
在我使用 5-10 个替换的情况下是否有必要使用 stringbuilder。 String someData = "......"; someData = someData.replaceAll("
我有一个字符串,我需要用字典中的值替换其中的标记。它必须尽可能高效。使用 string.replace 进行循环只会消耗内存(记住,字符串是不可变的)。 StringBuilder.Replace()
我正在使用具有许多不同库依赖项的 gradle 项目并使用新的 list 合并。在我的 标签我已经这样设置了: .... 但我收到错误消息: /android/MyApp/app/src/main
我正在尝试从一个数据库中的表中提取模式并将其传输到另一个数据库。以下是执行此操作的函数的一部分。 当 Table( ... ) 时出错被称为。 功能示例: def transfer_data(self
我是一名优秀的程序员,十分优秀!