Javascript 在最后一个斜杠 / 之后替换 href 的某些字符
Javascript Replace Certain Characters of href after the last slash /
我有一个标签
<a id="Link" href="mysite.net/K&N abc 123.html">Link</a>
我需要使用 JavaScript 删除非字母数字字符,然后用破折号替换空格-
并将结果小写。
所以/K&N abc 123.html
之后的所有东西,其余的href保持不变。
最终结果将如下所示
<a id="Link" href="mysite.com/kn-abc-123.html">Link</a>
我有一些代码要开始,但还没有完全把它放在一起以给出正确的结果。
var str = document.getElementById("Link").getAttribute("href");
str = str.replace(/'W+/g, '-').toLowerCase();
document.getElementById('Link').setAttribute("href",str);
这是一个垃圾箱。https://jsbin.com/gojoseduji/3/edit?html,output
var href = document.getElementById("Link").getAttribute('href');
var str = href
// replace each block of whitespace with a single '-' character
.replace(/'s+/g, '-')
// Filter out non alphanumerics, excluding : / -
.replace(/[^':'/'-'w's.]+/g, "")
// get rid of any hyphens that follow a slash
.replace(/'/-/g, '/')
.toLowerCase();
我只是使用了空格标识符,并确保使其成为全局:)
编辑:添加了去除除[/- :]以外的所有非字母数字的条件。我首先去除了空格,并让第二个正则表达式忽略了连字符。我还使变量名称不同,因为您的原始代码修改了变量。只是我的喜好。
EDIT-AGAINN:这种原始方式很好,但现在有几种不同的正则表达式,也许具有更流畅正则表达式技能的人可以将它们浓缩下来并做出更好的答案?
试试这个
var str = document.getElementById("Link").getAttribute("href");
var lastitem = str.split("/").pop(); //taking out last item after slash
lastitem = lastitem.split( " " ).map( function(value){ return value.replace(/[*'(')&/]/g, '').toLowerCase() } ).join( "-" ); //removing special characters and replacing space with hyphen
str = str.substring(0, str.lastIndexOf("/")) + lastitem;
document.getElementById('Link').setAttribute("href",str);
您可以将
replace
与callback
一起使用:
var href = document.getElementById("Link").getAttribute('href');
href = href.replace(/^((?:.*?'/{2})?[^'/]*'/)(.+)$/, function($0, $1, $2) {
return $1 + $2.replace(/[^'w's.]+/g, '').replace(/'s+/g, '-').toLowerCase(); });
document.getElementById('Link').setAttribute("href", href);
//=> mysite.net/kn-abc-123.html
或者在网址中带有ftp://
:
str = 'ftp://mysite.net/K&N abc 123.html'
str = str.replace(/^((?:.*?'/{2})?[^'/]*'/)(.+)$/, function($0, $1, $2) {
return $1 + $2.replace(/[^'w's.]+/g, '').replace(/'s+/g, '-').toLowerCase(); });
//=> ftp://mysite.net/kn-abc-123.html
相关文章:
- 在JavaScript中输出转义字符
- 在单击href链接的同时下载文件
- 不同浏览器中的空白字符正则表达式行为
- Regex匹配除“”之外的所有字符;.js”;
- 如果href包含X,请更改href
- 锚点元素的href属性自动更改
- 锚点元素不't使用svg时,请打开EDGE上的href
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用jquery删除href中的特定字符或标记
- javascript:使用哈希字符拆分HREF字符串
- 如何在 DOM 加载后使用 JavaScript 或 JQuery 从 href 属性中删除字符
- Javascript 在最后一个斜杠 / 之后替换 href 的某些字符
- 删除'+开头和结尾的字符e.link[0].href+'
- 显示文本中的x个字符,当单击href时,用换行符显示其余字符
- 如果前一个字符是/,如何忽略正则表达式结果(基本上忽略链接href内容)
- 我想修改href链接附加字符使用jQuery或JavaScript
- 我如何从href链接中删除特定字符
- I'我在$('a[href*=#]').each(function)处得到非法字符错误.可能的原
- HTML5-使用sms-href时删除URL字符