javascript - 使用正则表达式将 URL 中的与号 (&) 和空格转换为破折号 (-)

标签 javascript regex

通过下面的代码,我已将以下名称转换为 URL,例如

  • 爱情与关系http://domain.org/love-relationships
  • 职业与指导http://domain.org/career-guidance

    filter('ampToDash', function(){
        return function(text){
            return text ? String(text).replace(/ & /g,'-'): '';
        };
    }).filter('dashToAmp', function(){
        return function(text){
            return text ? String(text).replace(/-/g,' & '): '';
        };
    })
    

但是,我有一组新名称,但我不知道如何同时执行这两个操作。

  • 成为人类http://domain.org/being- human
  • 竞争性考试http://domain.org/competitive-exams

    filter('ampToDash', function(){
        return function(text){
            return text ? String(text).replace(/ /g,'-'): '';
        };
    }).filter('dashToAmp', function(){
        return function(text){
           return text ? String(text).replace(/-/g,' '): '';
        };
    })
    

如何组合这两个正则表达式代码,以便它可以协同工作?

最佳答案

您可能还希望扩展替换条件以涵盖所有“非单词”字符,而不仅仅是考虑您当前知道的字符(& 和空格)。这将更加面向 future ,并且可能更容易推理:

String(text).replace(/\W+/g, '-')

(\W+ 表示任何非单词字符序列。)

示例:

'Jack & Jill went up the @$%#! hill'.replace(/\W+/g, '-')

产量:

Jack-Jill-went-up-the-hill

并且由于存在信息丢失(即,通过查看转换后的字符串,您不知道到底是什么导致了“-”),因此找到原始字符串的一种方法是简单地存储它并通过转换后的字符串。详细说明:您可能会从这个新字符串(正如其他人指出的那样,是一个“slug”)查找一些文档。将 slug 与文档一起存储,然后只需从数据库中查找文档(及其原始标题)即可。

关于javascript - 使用正则表达式将 URL 中的与号 (&) 和空格转换为破折号 (-),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38460290/

相关文章:

php - 如果禁用了 javascript 并且您想要在 PHP 或正则表达式中准确地 (XXX)XXX-XXXX,如何过滤(和替换)phone# 输入

javascript - Vue.js - 将类添加到单击的按钮

javascript - 在使用 vue cli 3 创建的项目中,在哪里可以找到或如何设置 htmlWebpackPlugin.options.title?

javascript - 变量在 JavaScript 本地函数中时没有获取值

javascript - JS/node.js中匹配字符的行号

regex - 在 Mechanize 函数中使用哪个正则表达式标签?

regex - 如何在子目录中的所有java文件中grep一个字符串?

javascript - 如何使用 JS/AJAX/JQUERY 为 POST FORM 添加 Header Authorization?

javascript - 如何在 Vuejs 中创建动态的两个关系下拉列表

javascript - Typescript:在匹配的字符串之前插入变量