6

我已经准备好从标题中创建 slug,但是有一个问题。我的 RegEx 用连字符替换空格。但是当用户输入“Hi there”(多个空格)时,slug 最终会变成“Hi-----there”。当它真的应该是“Hi-there”时。

我应该创建正则表达式,以便它只在两边都有字符时替换空格吗?

或者有没有更简单的方法来做到这一点?

4

6 回答 6

10

我用这个:

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

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

于 2010-06-07T21:12:45.153 回答
5

只需匹配多个空格字符。

s/\s+/-/g
于 2010-06-07T21:02:44.253 回答
2

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

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

或者,如果您只希望这影响空格,请改为折叠空格(显然,在其他步骤之前)

于 2010-06-07T21:02:36.970 回答
2

丹尼尔的回答是正确的。

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

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

感谢“dense13”!

于 2012-07-03T01:17:35.263 回答
0

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

于 2010-06-07T21:04:35.550 回答
0

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

function hyphenSpace(s){
    s= (s.trim)? s.trim(): s.replace(/^\s+|\s+$/g,'');
    return s.split(/\s+/).join('-');
}
于 2010-06-07T21:48:44.997 回答