如下这个替换正则该怎么写?

2019-12-12 23:15:34 +08:00
 getlost
{% static 'image/27119724.jpg' %}

用 JavaScript,替换成

{% static 'image/27119724.jpg' %}

我试过用

str.replace(/\&#[0-9]*;/g, "'")

但是没成功,不知道错在那了

2530 次点击
所在节点    正则表达式
7 条回复
ClericPy
2019-12-12 23:20:02 +08:00
这种 HTML 实体符直接 unescape 一次不就出来了... 而且也不该是 [0-9], 有的实体符不是引号

回到正则

你的表达式是正确的, 用 console.log 可以看到, 所以目测是你用了个什么后端框架, 然后在模板里丢了个字符串, 但是对 unsafe 的字符串, 会被转义, 所以你该做的应该是跳过转义
Mikewu
2019-12-12 23:33:04 +08:00
```javascript
let str = '{% static 'image/27119724.jpg' %}'
str = str.replace(/\&#[0-9]*;/g, "'")
console.log('str: ', str)
```
getlost
2019-12-12 23:33:18 +08:00
@ClericPy 本来是学习 Django 的,但是还没学会前后台数据传送,所以想着把图片地址数据丢在模板里,然后替换一下,把图片加载出来,结果卡在这了,然后转去看 JavaScript 的内容,想着先弄出来再搞下一步,没想到这个问题好几天都没解决。
我感觉这个正则没对,因为我试过 str.replace(/\&#[0-9]*;/g, "gg") 然后 console.log ,结果没有替换。我去查查你说的跳过转义,谢谢啊
getlost
2019-12-12 23:35:24 +08:00
@Mikewu 大兄弟,我就是这样写的,但是没替换
Mikewu
2019-12-12 23:38:17 +08:00
@getlost #3 replace 方法是返回一个新的字符串,而不是修改原来的 str
ClericPy
2019-12-13 00:08:39 +08:00
@getlost #3 我以前用 flask 的 jinja2 模版, {{ var_name | safe }} 这样管道符 safe 来避免转义的, 不过大部分地方都不建议用

随手搜了下, Django 也是, google 搜索关键词 Django template safe

https://stackoverflow.com/questions/4056883/when-should-i-use-escape-and-safe-in-djangos-template-system

虽然我用的 doge 搜索
netnr
2019-12-13 06:35:26 +08:00
'{% static 'image/27119724.jpg' %}'.replace(/&#[0-9]{2};/g,'')

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/628548

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX