Javascript Slug 生成函数给出不正确的输出
Posted
技术标签:
【中文标题】Javascript Slug 生成函数给出不正确的输出【英文标题】:Javascript Slug Generation Function Giving Improper Output 【发布时间】:2019-06-13 13:55:35 【问题描述】:我在 jquery 中使用下面的函数来生成 URL slug
var text = $("#post_title").val();
var converted = text.toLowerCase().replace(/ /g,'-').replace(/[^\w-]+/g,'');
$("#post_slug").val(converted);
我想创建一个没有任何数值且没有附加 -
(连字符)的适当 slug
上面的代码发生了什么
我正在使用以下标题来生成 slug
标题:top 5 ways to get in list
蛞蝓:top-5-ways-to-get-in-list
我想避免 slug 中的数值,所以它应该如下所示
蛞蝓:top-ways-to-get-in-list
另外,如果有任何空格,特别是在结尾处,那么 slug 就变成了,我想避免任何 -
不需要的连字符
蛞蝓:top-ways-to-get-in-list-
我无法弄清楚代码中有什么问题。
【问题讨论】:
【参考方案1】:function generateSlug(text)
return text.trim().toLowerCase()
.replace(/[0-9]+/g, '')
.replace(/ +/g, '-');
console.log(generateSlug('Top 5 ways to get in list'));
console.log(generateSlug('Top 5 ways to get in list5'));
console.log(generateSlug('Top 5 ways to get in list5 '));
console.log(generateSlug(' Top 5 ways to get in list '));
console.log(generateSlug(' Top 5 ways to get in list '));
【讨论】:
如果我使用像Top 5 ways to get in list5-
这样的字符串,那么我会得到像 top-ways-to-get-in-list5-
这样的 slug【参考方案2】:
不管它是不是一个函数,你都可以在任何 JS 代码上这样做
var Text = 'Faa fee foo fog my code has bug'
Text = Text.toLowerCase();
Text = Text.trim();
Text = Text.replace('/\s/g','-');
Text = Text.replace(/ +/g,'-');
只需在需要的地方使用文本
【讨论】:
以上是关于Javascript Slug 生成函数给出不正确的输出的主要内容,如果未能解决你的问题,请参考以下文章