我有以下RegEx:
$('.my-selector').each(function(){
var t = $(this).text(),
id = t.toLowerCase().replace(/\s+/g, '-');
id = id.replace(/[^a-zA-Z0-9-]/g, "");
});
这会使用-
重复所有空格,然后删除任何非a-z
,0-9
或-
的字符。这有效但我注意到一件事,如果我有一个尾随空格它变成-
。举些例子。 My (test) string
变为my-test-string-
如何从字符串的最后删除最后一个-
(或)?
答案 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(/-$/, '');
});