当前位置:  开发笔记 > 编程语言 > 正文

JavaScript非正则表达式替换

如何解决《JavaScript非正则表达式替换》经验,为你挑选了2个好方法。

任何现有的JavaScript框架是否都具有非正则表达式replace()功能,或者已经将其作为一次性函数发布在Web上的某个位置?

例如,我想要替换"@!#$123=%",我不想担心要逃避哪些字符.大多数语言似乎都有两种替换方法.我想看到这个简单的事情.



1> Owen..:

我可能会误解你的问题,但javascript确实有 replace()

var string = '@!#$123=%';
var newstring = string.replace('@!#$123=%', 'hi');

编辑 :(见评论)第5版似乎确实有这个信息,虽然它没有显示我直接链接到它.这是相关部分:

replace()方法执行搜索和替换操作.它将正则表达式作为其第一个参数,将替换字符串作为其第二个参数.它搜索调用它的字符串以匹配指定的模式.如果正则表达式设置了g标志,则replace()方法用替换字符串替换字符串中的所有匹配项; 否则,它只替换它找到的第一个匹配.如果replace()的第一个参数是字符串而不是正则表达式,则该方法按字面搜索该字符串,而不是使用RegExp()构造函数将其转换为正则表达式,如search()所做的那样.


javascript函数仅替换第一个条目
对于“无正则表达式”选项,Nick的回答更为可靠,因为本机替换方法在* replace *字符串中使用特殊字符。因此,虽然用'hi'代替文本很好,但用任何包含'$'的东西替换都可能导致意外的结果。尝试以“ a” .replace(“ a”,“ $$ b”)为例:)

2> Nick Ager..:

我在搜索非正则表达式javascript字符串replace()方法时遇到了同样的问题.我的解决方案是使用split()和join()的组合:

"some text containing regex interpreted characters: $1.00".split("$").join("£");

这使:

"一些包含正则表达式解释字符的文本:£1.00"

与replace()比较:

"some text containing regex interpreted characters: $1.00".replace(new RegExp("$"),"£")

奇怪的是:

"一些包含正则表达式解释字符的文本:$ 1.00£"


«$»表示正则表达式的行尾!所以`RegExp("$")`与你预期的行尾相匹配没什么奇怪的.在将它发送到RegExp:`RegExp("\ $")之前,你应该已经转义了美元
推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有