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 生成函数给出不正确的输出的主要内容,如果未能解决你的问题,请参考以下文章

Gatsby slug 没有生成正确的页面

Rails Friendly_id:Slug 未正确生成

DDD:在哪里生成实体的 url slug?

用于生成 slug 的 T-SQL 函数?

带有非拉丁字符的 Javascript slug 函数

htaccess 无法将文章 ID 重定向到使用 php slug 函数生成的文章 slug