【问题标题】:javascript redirect & replacejavascript重定向和替换
【发布时间】:2013-07-23 19:32:28
【问题描述】:
<script type = "text/javascript">
    var r = window.location.href;
    if (r.match(/#|%23/)) {
        r = r.replace(/#|%23/gi, \"@NUM@\");
        window.location.href = r;
    }
</script>

此脚本将重定向页面并将 URL 中的 # 符号替换为 @NUM@(不要问为什么)...

我正在尝试修改脚本,使其不会替换位于 URL 末尾的“#”

示例:

http://www.example.com/test.php?f=abc#def

会变成

http://www.example.com/test.php?f=abc@NUM@def

但是这个链接:

http://www.example.com/test.php?f=abc#def#

会变成:

http://www.example.com/test.php?f=abc@NUM@def#

【问题讨论】:

    标签: javascript ajax regex redirect


    【解决方案1】:

    使用积极的前瞻来保证至少还有一个字符:

    /(#|%23)(?=.)/g
    

    【讨论】:

    • 也许(?!$)(不是行尾)是更明显的选择,但两者都做同样的工作。
    • 您的前瞻的唯一问题是 .也会匹配一个空格,所以如果 # 在 URL 的末尾有一个空格,例如[example.com/test.php?f=abc@NUM@def# ] 这意味着它仍然会替换结束 #。也许更换 .在前瞻中使用 # 所以 (?=#)
    • @libertaire:这取决于。您希望哪些函数不匹配空格?
    猜你喜欢
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 2016-02-12
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    相关资源
    最近更新 更多