【问题标题】:JavaScript clean-URL from page Title field [closed]来自页面标题字段的 JavaScript clean-URL [关闭]
【发布时间】:2013-02-19 16:13:51
【问题描述】:

我的表单中有一个字段,我在其中提供了我要添加到我的 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。

谢谢大家!

【问题讨论】:

    标签: php javascript regex short-url


    【解决方案1】:

    一气呵成:

    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 处理所有不需要的字符,并在开始和结束时修剪所有多余的破折号。第二个替换用连字符替换所有(组)斜线、下划线、竖线和空格。

    【讨论】:

    • 这个统治世界!谢谢狗!
    【解决方案2】:

    试试这个:

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

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

    "some-string-to-clean-up"
    

    【讨论】:

    • 是的,但是如果:“一些要清理的字符串”,我会得到:“some---string-to---clean-up”
    • 我的意思是如果我设置了两个以上的空格,我会得到上面的响应
    • 在正则表达式中添加了 + 以连续捕获多个不需要的字符。给我:var string = "Some string to clean up"; string.replace(/[^a-zA-Z0-9-]+/g, '-').toLowerCase(); "some-string-to-clean-up"
    • 感谢 jxpx777,这部分成功了!
    【解决方案3】:

    您不需要在 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, '-');
    

    【讨论】:

    • 有 "string".trim() 或 jQuery 的 $.trim() 来修剪字符串...但是谢谢 dawg!
    • js 中的 trim 只是删除空格。您在 php 中使用的修剪正在尝试删除前导和尾随破折号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 2017-07-21
    • 2013-02-01
    相关资源
    最近更新 更多