从字符串中使 URL 变得友好

zef*_*lex 3 javascript

例如我有这个字符串:

make no@ sen# `se !
Run Code Online (Sandbox Code Playgroud)

我想生成这样的网址

make-no-sen-se!
Run Code Online (Sandbox Code Playgroud)

我有这个:

    var value = $('.titleVal').val();
    if (value != '') {
        value = value.replace(/[^a-z0-9 _-]/gi, '-').toLowerCase();

        value = value.split(' ');
        var result = '';

        for (var i = 0; i < value.length; i++) {
            if ((value.length - 1) == i) {
                result += value[i];
            } else {
                result += value[i] + '-';
            }
        }
        $('#vidUrl').val(result);
    }
Run Code Online (Sandbox Code Playgroud)

但它会生成这个:

make-no--sen---se--
Run Code Online (Sandbox Code Playgroud)

Ari*_*iao 5

使用+*来表示一组的重复出现。

function process(value) {
    return value == undefined ? '' : value.replace(/[^a-z0-9_]+/gi, '-').replace(/^-|-$/g, '').toLowerCase();
}

var result = process($('.titleVal').val());
$('#vidUrl').val(result);
Run Code Online (Sandbox Code Playgroud)