2

我的表单中有一个字段,其中提供了我要添加到我的 CMS 的新页面的名称。

我在这里有一个 PHP 代码,它小写,设置“-”而不是“”,并使短 URL 看起来不错:

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

我对 JavaScript 的 RegEx 没有经验,所以任何人都可以帮我将这段 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"

第一个replace处理所有不需要的字符并在开始和结束时修剪所有额外的破折号。第二个替换用连字符替换所有(组)斜线、下划线、竖线和空格。

于 2013-02-19T16:25:01.637 回答
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, '-');

或者在一个声明中

 clean = clean.replace(/[^a-zA-Z0-9\/_| -]/g, '').replace(/^[\-]+/, '').replace(/[\-]+$/, '').toLowerCase().replace(/[\/_| -]+/g, '-');
于 2013-02-19T16:24:26.623 回答
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 回答