Javascript 替换 href 最后一个斜杠/之后的某些字符

标签 javascript regex replace href

我有这个标签

<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();

我刚刚使用了空白标识符,并确保将其设为全局:)

编辑:添加了条件以去除除 [/- :] 之外的所有非字母数字。我首先删除了空格,然后让第二个正则表达式忽略连字符。我还使变量名称不同,因为您的原始代码修改了变量。只是我的偏好。

再次编辑:这种最初的方式很好,但现在有一些不同的正则表达式,也许具有更流畅正则表达式技能的人可以将它们压缩并做出更好的答案?

关于Javascript 替换 href 最后一个斜杠/之后的某些字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35425918/

相关文章:

javascript - AWS Cognito 身份 JS : Forget/Remember/Do Not Remember Device

javascript - sencha Controller 文件中的按钮点击不起作用

正则表达式:如何将整个字符串与固定长度区域和随后被覆盖的负前瞻条件相匹配?

javascript - 如何将定位的正则表达式更改为删除参数的分隔符查询字符串的字符串

javascript - Backbone 实体

javascript - 谷歌地图圆圈与标签

mysql - 更新 MySQL(使用正则表达式?)

r - 如何用 R 中另一个 tibble 的估算列替换 tibble 中的 NA 列

php: dom 用另一个 dom 的根节点替换节点

python - 替换 Pandas 数据框中的特定列值