2

フォームにフィールドがあり、CMSに追加する新しいページの名前を入力します。

ここに、小文字で、''の代わりに'-'を設定し、短いURLの見栄えを良くするPHPコードがあります。

$clean = iconv('UTF-8', 'ASCII//TRANSLIT', $string);
$clean = preg_replace("/[^a-zA-Z0-9\/_| -]/", '', $clean);
$clean = strtolower(trim($clean, '-'));
$clean = preg_replace("/[\/_| -]+/", '-', $clean);

私はJavaScriptの正規表現の経験がないので、このPHPコードをJavaScriptに変換するのを手伝ってくれる人はいますか。

皆さん、ありがとうございました!

4

3 に答える 3

8

オールインワンゴー:

var string = "The   new page's future name!"
,   clean = string.replace(/(^\-+|[^a-zA-Z0-9\/_| -]+|\-+$)/g, '')
            .toLowerCase()
            .replace(/[\/_| -]+/g, '-')
;
console.log(clean); // "the-new-pages-future-name"

1つ目replaceは、すべての不要な文字を処理し、開始時と終了時にすべての余分なダッシュをトリミングします。2番目の置換では、すべての(グループの)スラッシュ、アンダースコア、パイプ、およびスペースがハイフンに置き換えられます。

于 2013-02-19T16:25:01.637 に答える
2

これを試して:

var string = "Some string to clean up";
string.replace(/[^a-zA-Z0-9-]+/g, '-').toLowerCase();

私のブラウザコンソールでは、

"some-string-to-clean-up"
于 2013-02-19T16:18:11.777 に答える
2

javascriptの文字セット間で変換する必要はありません。これは、残りの部分の非常に文字通りのバージョンです。

clean = clean.replace(/[^a-zA-Z0-9\/_| -]/g, '');
clean = clean.replace(/^[\-]+/, ''); // trim start
clean = clean.replace(/[\-]+$/, ''); // trim end
clean = clean.toLowerCase();
clean = clean.replace(/[\/_| -]+/g, '-');

または1つのステートメントで

 clean = clean.replace(/[^a-zA-Z0-9\/_| -]/g, '').replace(/^[\-]+/, '').replace(/[\-]+$/, '').toLowerCase().replace(/[\/_| -]+/g, '-');
于 2013-02-19T16:24:26.623 に答える