chore: extended slugify function (#8740)
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com> Co-authored-by: Omar López <zomars@me.com>pull/8948/head
parent
1f51199a7b
commit
4b356dd937
|
@ -1,5 +1,13 @@
|
||||||
export const slugify = (str: string) => {
|
export const slugify = (str: string) => {
|
||||||
return str.replace(/[^a-zA-Z0-9-]/g, "-").toLowerCase();
|
return str
|
||||||
|
.toLowerCase() // Convert to lowercase
|
||||||
|
.trim() // Remove whitespace from both sides
|
||||||
|
.normalize("NFD") // Normalize to decomposed form for handling accents
|
||||||
|
.replace(/\p{Diacritic}/gu, "") // Remove any diacritics (accents) from characters
|
||||||
|
.replace(/[^\p{L}\p{N}\p{Zs}\p{Emoji}]+/gu, "-") // Replace any non-alphanumeric characters (including Unicode) with a dash
|
||||||
|
.replace(/[\s_]+/g, "-") // Replace whitespace and underscores with a single dash
|
||||||
|
.replace(/^-+/, "") // Remove dashes from start
|
||||||
|
.replace(/-+$/, ""); // Remove dashes from end
|
||||||
};
|
};
|
||||||
|
|
||||||
export default slugify;
|
export default slugify;
|
||||||
|
|
Loading…
Reference in New Issue