Skip to content

Instantly share code, notes, and snippets.

@stoutlabs
Last active October 8, 2021 20:23
Show Gist options
  • Save stoutlabs/a45c8730d2578a782105390608693759 to your computer and use it in GitHub Desktop.
Save stoutlabs/a45c8730d2578a782105390608693759 to your computer and use it in GitHub Desktop.
Slugify Fn
export const slugify = string => {
const a =
"àáâäæãåāăąçćčđďèéêëēėęěğǵḧîïíīįìłḿñńǹňôöòóœøōõőṕŕřßśšşșťțûüùúūǘůűųẃẍÿýžźż·/_,:;";
const b =
"aaaaaaaaaacccddeeeeeeeegghiiiiiilmnnnnoooooooooprrsssssttuuuuuuuuuwxyyzzz------";
const p = new RegExp(a.split("").join("|"), "g");
return string
.toString()
.toLowerCase()
.replace(/\s+/g, "-") // Replace spaces with -
.replace(p, c => b.charAt(a.indexOf(c))) // Replace special characters
.replace(/&/g, "-and-") // Replace & with 'and'
.replace(/[^\w-]+/g, "") // Remove all non-word characters
.replace(/--+/g, "-") // Replace multiple - with single -
.replace(/^-+/, "") // Trim - from start of text
.replace(/-+$/, ""); // Trim - from end of text
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment