RegEx删除尾随空格

时间:2016-02-24 05:28:43

标签: javascript regex

我有以下RegEx:

$('.my-selector').each(function(){
  var t = $(this).text(),
      id = t.toLowerCase().replace(/\s+/g, '-');
  id  = id.replace(/[^a-zA-Z0-9-]/g, "");
});

这会使用-重复所有空格,然后删除任何非a-z0-9-的字符。这有效但我注意到一件事,如果我有一个尾随空格它变成-。举些例子。 My (test) string变为my-test-string-

如何从字符串的最后删除最后一个-(或)?

2 个答案:

答案 0 :(得分:1)

最简单的选择是在替换空格之前链接paint along the mouse coordinates。这样做会删除尾随空格。

string.toLowerCase().trim().replace(/\s+/g, '-')

输出my-test-string

var text = 'My (test) string ';
var id = text.toLowerCase().trim().replace(/\s+/g, '-')
             .replace(/[^a-zA-Z0-9-]/g, '');

console.log(id); // my-test-string

当然,您也可以使用负向前瞻以防止最后的空白被替换:

string.toLowerCase().replace(/\s+(?!\s*$)/g, '-')

答案 1 :(得分:1)

尝试

$('.my-selector').each(function(){
  var t = $(this).text(),
      id = t.toLowerCase().replace(/\s+/g, '-');
  id  = id.replace(/[^a-zA-Z0-9-]/g, "").replace(/-$/, '');
});