首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换()在使用字符串而不是regex时不考虑"g“标志。

替换()在使用字符串而不是regex时不考虑"g“标志。
EN

Stack Overflow用户
提问于 2013-09-11 14:31:05
回答 2查看 70关注 0票数 1
代码语言:javascript
复制
var a = 'Construction,Airports,Construction|Commercial Construction,Construction|Education,Construction|Healthcare,Construction|Housing,Construction|Industrial Construction,Construction|Other,Construction|Ports,Construction|Rail,Construction|Residential Construction,Construction|Roads & Bridges,Social Infrastructure|Commercial Construction,Social Infrastructure|Education,Social Infrastructure|Healthcare,Social Infrastructure|Housing,Social Infrastructure|Other,Social Infrastructure|Residential Construction';

alert(a.replace('|', ',', 'g'));

在chrome上,它只替换|的第一次出现,同时在replace()函数的regex形式中使用g标志,它替换所有事件:

代码语言:javascript
复制
alert(a.replace(/\|/g, ',', 'g'));

,谁能帮我理解一下,如果我在第一种形式的替换中做错了什么?这是预期的行为还是一个bug?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-11 14:35:08

使用此格式:a.replace(/\|/g, ',') jsFiddle实例

根据MDN

在String.replace方法中使用标志参数是不标准的。不要使用此参数,而是使用带有相应标志的RegExp对象。

票数 1
EN

Stack Overflow用户

发布于 2013-09-11 14:34:00

使用flags参数是不标准的;使用带有相应标志的RegExp对象是标准用法。

有些浏览器可能支持带有字符串版本的标志(请参阅MDN上的这个示例),但不应该依赖它。

例如,您的示例在Firefox中运行得很好,但在Chrome中却不起作用。

参考资料:ECMA-262 5.1§15.5.4.11

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18744024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档