首页 > 解决方案 > 用大写替换href中的小写字符

问题描述

我有一个为关键字生成链接的网页。链接在网页上生成,如下所示:

https://www.example.com/?keywords=energy
https://www.example.com/?keywords=wind%20power

我想更改它,以便=(以及%20适用时)之后的第一个字符为大写:

https://www.example.com/?keywords=Energy
https://www.example.com/?keywords=Wind%20Power

目前,我一直在按关键字将它们更改为大写:

$(document).ready(function(){
    $('a').each(function(){
        this.href = this.href.replace('energy', 'Energy');
    });

    $('a').each(function(){
        this.href = this.href.replace('wind%20power', 'Wind%20Power');
    });
});

有没有办法做到这一点,但有任何字符串?我已经尝试了几个正则表达式,但似乎找不到一个正则表达式来使用 javascript 将等号后的第一个字符替换为大写等效项。例如,我尝试了这个(https://regex101.com/r/ybQbaE/1/),然后尝试将其转储到页面上的脚本中:

`$(document).ready(function(){
    $('a').each(function(){
        this.href = this.href.replace(\=.,\U$0);
    });
});`

当然它不起作用,因为它适用于 PHP,但是当我在正则表达式测试器上单击 ECMAscript Flavor 时,它只是将等号和后面的第一个字符替换为\U$0.

标签: javascripthtmljqueryregex

解决方案


如果这些是你唯一的情况,你可以用一个简单的衬里解决它:

url="https://www.example.com/?keywords=wind%20power%20earth%20fire"
url.replace(/(=\w)|(\s\w)|(%20\w)/g,val=>val.toUpperCase())

有关正则表达式模式的更多信息,请访问此。 有关 javascript 替换功能的更多信息,请访问替换 MSDN 文档


推荐阅读