【问题标题】:Replacing characters inside URL parameters via regular expression in javascript通过javascript中的正则表达式替换URL参数中的字符
【发布时间】:2014-08-21 23:54:56
【问题描述】:

我想使用正则表达式替换 URL 参数值中的一些变音字符以查找字符值。

对于单个字符/单词,我用行替换:

url = url.replace(/null/g, "");

我可以使用这个正则表达式来查找参数值:

/\=[a-zA-Z0-9šŠđĐčČćĆžŽ]*\&/g

如何在单行中进行替换(如果可能)?

例如

输入http://localhost:8080/page?param1=svašta&param2=nešto&param3=trebam

输出http://localhost:8080/page?param1=svata&param2=neto&param3=trebam

【问题讨论】:

  • 提供样本输入和预期输出。
  • 你想用什么来替换它们?还是像null 那样删除它们?顺便说一句,a-zA-Z0-9 没有变音符号……
  • 只是为了删除它们...我需要在参数值中维护其他字符
  • 那么url = url.replace(/null|\=[a-zA-Z0-9šŠđĐčČćĆžŽ]*\&/g, "");应该这样做吗?

标签: javascript regex url diacritics


【解决方案1】:

你可以的

url = url.replace(/\=[a-zA-Z0-9šŠđĐčČćĆžŽ]*\&/g, function(match) {
    return match.replace(/[šŠđĐčČćĆžŽ]/g, "");
});

【讨论】:

    【解决方案2】:

    你不需要正则表达式,你可以使用encodeURI

    url = url.replace(/null/g, "");
    url = encodeURI(url);
    

    【讨论】:

    • 不,这不是我想要的。我不想在我的 URI 中使用百分比编码的字符。 IE 不喜欢它;)
    • 糟糕,我以为这只是 oldIE 中的一个错误。然后我读到“这种行为是设计使然。”——就像一记耳光。
    • @Miki:如果我阅读了你链接的文章,只有非 ascii 字符有问题,我没有看到非 ascii 百分比编码字符有任何问题。请注意,此问题仅出现在旧版本的 IE (4.5 => 7)
    • 你没有仔细阅读。再次阅读解决方法。在适用于它适用的IE版本是9.0、7.0、6.0。
    • @Miki:没错,自动翻译有问题。但是问题只发生在 utf8 编码字符上,而不是百分比编码字符!
    猜你喜欢
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 2016-05-04
    • 2011-12-05
    相关资源
    最近更新 更多