V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
getlost
V2EX  ›  正则表达式

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

  •  
  •   getlost · 2019-12-12 23:15:34 +08:00 · 2709 次点击
    这是一个创建于 1794 天前的主题,其中的信息可能已经有所发展或是发生改变。
    {% static 'image/27119724.jpg' %}
    

    用 JavaScript,替换成

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

    我试过用

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

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

    7 条回复    2019-12-13 06:35:26 +08:00
    ClericPy
        1
    ClericPy  
       2019-12-12 23:20:02 +08:00
    这种 HTML 实体符直接 unescape 一次不就出来了... 而且也不该是 [0-9], 有的实体符不是引号

    回到正则

    你的表达式是正确的, 用 console.log 可以看到, 所以目测是你用了个什么后端框架, 然后在模板里丢了个字符串, 但是对 unsafe 的字符串, 会被转义, 所以你该做的应该是跳过转义
    Mikewu
        2
    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
        3
    getlost  
    OP
       2019-12-12 23:33:18 +08:00
    @ClericPy 本来是学习 Django 的,但是还没学会前后台数据传送,所以想着把图片地址数据丢在模板里,然后替换一下,把图片加载出来,结果卡在这了,然后转去看 JavaScript 的内容,想着先弄出来再搞下一步,没想到这个问题好几天都没解决。
    我感觉这个正则没对,因为我试过 str.replace(/\&#[0-9]*;/g, "gg") 然后 console.log ,结果没有替换。我去查查你说的跳过转义,谢谢啊
    getlost
        4
    getlost  
    OP
       2019-12-12 23:35:24 +08:00
    @Mikewu 大兄弟,我就是这样写的,但是没替换
    Mikewu
        5
    Mikewu  
       2019-12-12 23:38:17 +08:00
    @getlost #3 replace 方法是返回一个新的字符串,而不是修改原来的 str
    ClericPy
        6
    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
        7
    netnr  
       2019-12-13 06:35:26 +08:00
    '{% static 'image/27119724.jpg' %}'.replace(/&#[0-9]{2};/g,'')
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2526 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 83ms · UTC 00:18 · PVG 08:18 · LAX 16:18 · JFK 19:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.