从标题创建Slugs?

时间:2010-06-07 20:59:45

标签: javascript regex slug

我已经掌握了从头衔创造slu g的一切,但有一个问题。我的RegEx用连字符替换空格。但是当用户输入“Hi there”(多个空格)时,slug最终会变成“Hi ----- there”。什么时候真的应该是“嗨 - 那里”。

我是否应该创建正则表达式,以便在任何一方都有字符时只替换空格?

或者有更简单的方法吗?

6 个答案:

答案 0 :(得分:7)

我用这个:

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

用一个破折号替换所有出现的一个或多个非字母数字字符。

答案 1 :(得分:5)

只需匹配多个空白字符。

s/\s+/-/g

答案 2 :(得分:2)

最后一步,将重复的-折叠成一个-可能是最简单的:

replace /-{2,}/ by "-"

或者,如果您只想让它影响空格,请改为折叠空格(显然是在其他步骤之前)

答案 3 :(得分:2)

丹尼尔的回答是正确的。

但是,如果有人在寻找完整的解决方案,我喜欢这个功能,

http://dense13.com/blog/2009/05/03/converting-string-to-slug-javascript/

感谢“dense13”!

答案 4 :(得分:0)

我会将[\s]+替换为'-'然后[^\w-]替换为''

答案 5 :(得分:0)

您可能希望首先修剪字符串,以避免前导和尾随连字符。

function hyphenSpace(s){
    s= (s.trim)? s.trim(): s.replace(/^\s+|\s+$/g,'');
    return s.split(/\s+/).join('-');
}