用破折号替换特殊字符

时间:2016-04-11 19:07:34

标签: 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()这样的东西,然后它会替换吗?

3 个答案:

答案 0 :(得分:3)

您可以使用否定前瞻来避免替换在字符串末尾发生的任何内容,然后使用后续语句来替换发生在其中的任何非单词字符,而不是执行某些操作来替换最终的-。结束时有一个空的空间。

$('#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);
});

示例小提琴:https://jsfiddle.net/ue1vedez/

答案 1 :(得分:-1)

如何添加另一个会删除结尾短划线的(function(){ 'use strict'; angular.module('app').controller('BankController', BankController); BankController.$inject = ["$scope", "User"]; function BankController($scope, User){ User.getBank.get({id:1}, function(item){ console.log(item); },function(err){ $scope.error=true; }); } } })();

replace()

答案 2 :(得分:-1)

$('#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);
});

使用W +而不是W,因为它不允许放置' - '在最后一次输入各种字符时