javascript - 如何在 jQuery 中将标题转换为 URL slug?

标签 javascript jquery regex slug slugify

我正在 CodeIgniter 中开发一个应用程序,我正在尝试使表单上的一个字段动态生成 URL slug。我想做的是删除标点符号,将其转换为小写,并用连字符替换空格。例如,Shane's Rib Shack 会变​​成 shanes-rib-shack。

这是我目前所拥有的。小写部分很简单,但替换似乎根本不起作用,我不知道要删除标点符号:

$("#Restaurant_Name").keyup(function() {
  var Text = $(this).val();
  Text = Text.toLowerCase();
  Text = Text.replace('/\s/g','-');
  $("#Restaurant_Slug").val(Text);  
});

最佳答案

我不知道“蛞蝓”这个词是从哪里来的,但我们开始吧:

function convertToSlug(Text) {
  return Text.toLowerCase()
             .replace(/ /g, '-')
             .replace(/[^\w-]+/g, '');
}

第一个 replace 方法会将空格更改为连字符,其次,replace 删除任何不是字母数字、下划线或连字符的内容。

如果您不希望“like - this”变成“like---this”,那么您可以改用这个:

function convertToSlug(Text) {
  return Text.toLowerCase()
             .replace(/[^\w ]+/g, '')
             .replace(/ +/g, '-');
}

这将在第一次替换时删除连字符(但没有空格),在第二次替换时它将连续的空格压缩成一个连字符。

所以“like - this”会变成“like-this”。

关于javascript - 如何在 jQuery 中将标题转换为 URL slug?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1053902/

相关文章:

c# - 如何在 Jquery 日期时间选择器中更改日期格式

javascript - 无法从动态文本框发布数据

MySQL基于带分隔符的子字符串选择带有LIKE或REGEX的列字符串

javascript - CodeceptJs等待元素从DOM中消失

javascript - 如何将 fillPatternImage 置于楔形中心?

javascript - Flex/AIR 调用 Javascript 函数

javascript - 为什么 push() 在循环中不起作用?

javascript - 动态生成的 div 上不显示弹出窗口

JavaScript 电子邮件正则表达式

python - 将文件名与前面的零匹配