用户在#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()
这样的东西,然后它会替换吗?
答案 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);
});
答案 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,因为它不允许放置' - '在最后一次输入各种字符时