我的表单中有一个字段,其中我提供了我正在添加到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。
谢谢大家!
答案 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, '-');