javascript - 用破折号替换特殊字符

标签 javascript jquery html

用户在#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/

相关文章:

javascript - 单击 JavaScript 时删除按钮

javascript - 验证 (HTML5) : Attribute 'X' is not a valid attribute of element 'Y'

jquery - 悬停时更改 CSS 背景图像的最佳方法

javascript替换第一个/最后一个字母并将中间文本包含在标签中

html - 绝对定位元素的百分比宽度

javascript - 创建一堆空对象的更好方法

javascript - <textarea> 的灵活高度作为新的换行符

javascript - jQuery - 当滚动击中特定元素时自动输入焦点

javascript - 更改整个 HTML 表格中特定单词的颜色

javascript - 如何获取浏览器的子窗口数量