使用JavaScript创建永久链接

Jon*_*ero 9 javascript regex permalinks

我有一个文本框,用户放置一个这样的字符串:

"hello world! I think that __i__ am awesome (yes I am!)"
Run Code Online (Sandbox Code Playgroud)

我需要像这样创建一个正确的URL:

hello-world-i-think-that-i-am-awesome-yes-i-am
Run Code Online (Sandbox Code Playgroud)

如何使用正则表达式完成?

另外,是否可以使用希腊语(例如)?

"???? ??? ?????"
Run Code Online (Sandbox Code Playgroud)

转向

geia-sou-kosme
Run Code Online (Sandbox Code Playgroud)

在其他编程语言(Python/Ruby)中,我使用的是翻译数组.我应该在这里做同样的事吗?

npu*_*pup 14

试试这个:

function doDashes(str) {
    var re = /[^a-z0-9]+/gi; // global and case insensitive matching of non-char/non-numeric
    var re2 = /^-*|-*$/g;     // get rid of any leading/trailing dashes
    str = str.replace(re, '-');  // perform the 1st regexp
    return str.replace(re2, '').toLowerCase(); // ..aaand the second + return lowercased result
}
console.log(doDashes("hello world! I think that __i__ am awesome (yes I am!)"));
// => hello-world-I-think-that-i-am-awesome-yes-I-am
Run Code Online (Sandbox Code Playgroud)

至于希腊字符,是的,我想不出别的东西,而不是另一个正则表达式使用的某种查找表.

编辑,这里是oneliner版本:
编辑,添加到LowCase ():
编辑,令人尴尬的修复尾随正则表达式:

function doDashes2(str) {
    return str.replace(/[^a-z0-9]+/gi, '-').replace(/^-*|-*$/g, '').toLowerCase();
}
Run Code Online (Sandbox Code Playgroud)