来自页面标题字段的JavaScript clean-URL

时间:2013-02-19 16:13:52

标签: php javascript regex short-url

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

我在这里有一个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的RegEx,所以任何人都可以帮助我将这段PHP代码转换为JavaScript。

谢谢大家!

3 个答案:

答案 0 :(得分: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负责处理所有不需要的字符,并在开始和结束时修剪所有额外的破折号。第二个替换用连字符替换所有(组)斜杠,下划线,管道和空格。

答案 1 :(得分:2)

试试这个:

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

在我的浏览器控制台中,它会产生

"some-string-to-clean-up"

答案 2 :(得分: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, '-');