这个正则表达式:
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
最佳答案
我假设您的实际输入是“狗跳过了懒惰的椅子”,连字符周围的空格被转换,因为没有其他原因该模式应该在那里匹配。
试试这个:
str.replace(/( +- *)|(- +)|( +)/g, '-').toLowerCase();
显式检查连字符两侧的空格字符串(第一个模式也被设计为消耗尾随空格),在此过程中仅消耗一个连字符。如果连字符已经存在且被空格包围,则该连字符将包含在匹配中,因此当写入连字符时,它只是一个“替换”;在这种情况下,只需删除空格,并通过替换操作重新创建连字符,因为它是作为表达式的一部分捕获的。
关于javascript - 如何防止这个用空格替换连字符的正则表达式也用额外的连字符替换连字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4328202/