通过下面的代码,我已将以下名称转换为 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/