用户在#title
中输入他们的文本,JQuery 转换字符串并将其放入名为#url
的输入字段中。以下代码有效:
$('#title').on('keyup', function (e) {
e.preventDefault();
var str = $(this).val();
str = str.replace(/\W+/g, '-').toLowerCase();
$('#url').val(str);
});
但问题是,如果我输入 Big "Fish"Little "Fish"
,JQuery 会将其转换为:big-fish-little-fish-
。所以问题是我如何删除最后一个 - 最后。我可以使用类似 before()
的东西,然后它会进行替换吗?
最佳答案
而不是做一些事情来替换最后的 -
您还可以使用否定前瞻来避免替换字符串末尾出现的任何内容,然后使用后续语句将出现在末尾的任何非单词字符替换为空格。
$('#title').on('keyup', function (e) {
//alert("key up");
e.preventDefault();
var str = $(this).val();
str = str.replace(/\W+(?!$)/g, '-').toLowerCase();
str = str.replace(/\W$/, '').toLowerCase();
$('#url').val(str);
});
示例 fiddle :https://jsfiddle.net/ue1vedez/
关于javascript - 用破折号替换特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36557202/