我已经准备好从标题中创建 slug,但是有一个问题。我的 RegEx 用连字符替换空格。但是当用户输入“Hi there”(多个空格)时,slug 最终会变成“Hi-----there”。当它真的应该是“Hi-there”时。
我应该创建正则表达式,以便它只在两边都有字符时替换空格吗?
或者有没有更简单的方法来做到这一点?
我已经准备好从标题中创建 slug,但是有一个问题。我的 RegEx 用连字符替换空格。但是当用户输入“Hi there”(多个空格)时,slug 最终会变成“Hi-----there”。当它真的应该是“Hi-there”时。
我应该创建正则表达式,以便它只在两边都有字符时替换空格吗?
或者有没有更简单的方法来做到这一点?
我用这个:
yourslug.replace(/\W+/g, '-')
这用一个破折号替换所有出现的一个或多个非字母数字字符。
只需匹配多个空格字符。
s/\s+/-/g
作为最后一步,将重复-
的 s折叠成一个可能是最简单的:-
replace /-{2,}/ by "-"
或者,如果您只希望这影响空格,请改为折叠空格(显然,在其他步骤之前)
丹尼尔的回答是正确的。
但是,如果有人正在寻找完整的解决方案,我喜欢这个功能,
http://dense13.com/blog/2009/05/03/converting-string-to-slug-javascript/
感谢“dense13”!
我会替换[\s]+
为'-'
,然后替换[^\w-]
为''
您可能需要先修剪字符串,以避免前导和尾随连字符。
function hyphenSpace(s){
s= (s.trim)? s.trim(): s.replace(/^\s+|\s+$/g,'');
return s.split(/\s+/).join('-');
}