2016-04-11 12 views
2

ユーザは#titleにテキストを入力し、JQueryはその文字列を変換して#urlという入力フィールドに配置します。次のコードは動作します:big-fish-little-fish-:私はBig "Fish" Little "Fish" jQueryのにこれを変換する入力した場合特殊文字をダッシュ​​で置き換える

$('#title').on('keyup', function (e) {    
    e.preventDefault(); 
    var str = $(this).val(); 
    str = str.replace(/\W+/g, '-').toLowerCase(); 
    $('#url').val(str); 
}); 

しかし、ここでは、問題です。だから問題は最後を取り除くにはどうすればいいのかということです。 before()のようなものを使用して、それから交換を行うことができますか?あなたはまたの終わりに起こる何かを置き換える避けるために、負の先読みを使用することができ、最終的な-を置き換えるために何かをするの終了ダッシュを

str = str.replace(/\W+/g, '-').replace(/\-$/, '').toLowerCase(); 

答えて

2

代わりに除去するであろう他のreplace()を追加する方法について

+0

への種類の様々な文字はあなたが完璧に動作感謝際! – Sickaaron

0

その後、次のステートメントを使用して、末尾にある非単語のcharを空のスペースで置き換えます。

$('#title').on('keyup', function (e) { 
    //alert("key up"); 
    e.preventDefault(); 
    var str = $(this).val(); 
    str = str.replace(/\W+(?!$)/g, '-').toLowerCase(); 
    str = str.replace(/\W$/, '').toLowerCase(); 
    $('#url').val(str); 
}); 

例フィドル:https://jsfiddle.net/ue1vedez/

0
$('#title').on('keyup', function (e) { 
    //alert("key up"); 
    e.preventDefault(); 
    var str = $(this).val(); 
    str = str.replace(/\W+(?!$)/g, '-').toLowerCase(); 
    str = str.replace(/\W+$/, '').toLowerCase(); 
    $('#url').val(str); 
}); 

使用W +だけではなく、W、それはそう置くことはできませので、 ' - ' 最後の最後

関連する問題