这个正则表达式:
str.replace(/ +/g, '-').toLowerCase();
将转换为:
The dog jumped over the lazy - chair
进入这个:
the-dog-jumped-over-the-lazy---chair
如何修改它以便它产生它(只有一个连字符):
the-dog-jumped-over-the-lazy-chair
答案 0 :(得分:1)
我认为你的实际输入是“狗跳过懒惰的椅子”,连字符周围的空格被转换,因为没有其他原因,模式应该与那里匹配。
试试这个:
str.replace(/( +- *)|(- +)|( +)/g, '-').toLowerCase();
显式检查连字符两侧的空格字符串(第一个模式也设计为消耗尾随空格),在该过程中仅使用一个连字符。如果一个连字符已经存在,并且空格包围,则该连字符包含在匹配中,因此当写连字符时,它只是一个“替换”;在这种情况下,只删除空格,并且替换操作重新创建连字符,因为它是作为表达式的一部分捕获的。
答案 1 :(得分:0)
在正则表达式中包含连字符。
str.replace(/[ -]+/g, '-').toLowerCase();