使用正则表达式更新字符串
Update String using regex
使用以下代码,我尝试使用正则表达式向字符串添加样式,而不是"已更新"设置为<'span style='color:blue' >test</span> text'
它被设置为'test text'
.我是否滥用正则表达式?
来源 :
var text = 'test text';
var stringToStyle = 'test';
var update = "<span style='color:blue' >" + stringToStyle + "</span>";
var updated = text.replace('/'+stringToStyle+'/gi' , update);
console.log(update);
console.log(updated);
普伦克尔 :https://plnkr.co/edit/6uO3M8kATQLXvWWVx1Vw?p=preview
您正在将字符串(而不是正则表达式)传递到.replace
中。请注意,在具有正则表达式控制字符的情况下stringToStyle
这不是很安全。
var regexp = new RegExp(stringToStyle, 'gi');
var updated = text.replace(regexp, update);
或者你可以直接通过stringToStyle
,这将是安全的。
请注意,
您不能像在 PHP 中那样将变量与正则表达式分隔符连接起来。您需要使用 RegExp
构造函数表示法来使用变量构建动态模式。您可以安全地使用
var updated = text.replace(RegExp(stringToStyle.replace(/[.*+?^${}()|[']'']/g, "''$&"), "gi") , update);
.replace(/[.*+?^${}()|[']'']/g, "''$&")
来自这个 MDN 参考。这个"技巧"将转义所有必须转义为正则表达式模式的特殊元字符。
如果您使用
var updated = text.replace(stringToStyle, update);
它将执行一次替换。也许,这就是你所需要的一切。
相关文章:
- 以字符串形式读取量角器测试中的更新输入
- 将字符串转换为数组使用javascript更新一个值并返回一个字符串
- 将鼠标悬停在字符串上并更新预览
- 如何以良好的性能更新修改后的字符串
- 在jQuery中更新base64图像字符串时未进行图像刷新
- 如何将一些参数从javascript接收响应字符串 asp.net 页面并更新html文档
- JS 函数不更新 HTML 字符串
- 如何在 JavaScript 中设置/更新字符串对象的值
- SAPUI5/OPENUI5:将字符串绑定到 JSON 模型并自动更新更大的字符串(读取 [对象%20Object])
- 更新 Javascript Array 并再次字符串化
- 使用正则表达式更新字符串
- 如何使用特殊字符(%,等)将字符串从文本区域更新到mysql表
- 更新文档,但出现错误:对于未定义的值,强制转换为字符串失败
- MongoDB(通过Meteor)在更新集合文档时将对象属性视为字符串
- jQuery.attr() 不更新 HTML 字符串
- 使用 jQuery 更新 XML 字符串
- MySQL UPDATE只更新整数,不更新字符串
- 缓存——一次用查询字符串更新多个js文件
- 基于另一个字符串更新/添加字符串值
- 从JS "字符串"更新值属性