我已经掌握了从头衔创造slu g的一切,但有一个问题。我的RegEx用连字符替换空格。但是当用户输入“Hi there”(多个空格)时,slug最终会变成“Hi ----- there”。什么时候真的应该是“嗨 - 那里”。
我是否应该创建正则表达式,以便在任何一方都有字符时只替换空格?
或者有更简单的方法吗?
答案 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('-');
}