我有一个CMS,想在搜索引擎中创建一个不错的子弹
我试图用正则表达式来实现它,但是看起来它完全忽略了
一个小例子:
$('#name_nl').blur(function() {
var string = $('#name_nl').val();
string = string.replace(/[A-Za-z0-9]{0,1}[A-Za-z0-9-]/g,'');
$('#slug_nl').val(string.toLowerCase());
//console.log("Blurred name_nl");
});
在上面的示例中,应在我允许第一个字符为A-Z a-z和0-9的情况下给出输出,此后还允许-。
但是当我在(WI-FI) network
上进行测试时,我得到了(wi-fi) network
我已经在正则表达式测试仪上对其进行了测试,它看起来很棒 但是Javascript不喜欢它...
https://regex101.com/r/ev3uFR/2
如何删除每个特殊字符而不是-并将它们作为第一个和最后一个字符删除?
答案 0 :(得分:4)
我建议在字符串的开头和结尾删除连字符,并在任何其他情况下删除字母数字和-
以外的所有字符:
.replace(/^-+|-+$|[^A-Za-z0-9-]+/g, "")
请参见regex demo。
详细信息
^-+
-字符串位置的开始,并且那里有1个或更多-
字符|
-或-+$
-字符串末尾有1个或多个连字符|
-或[^A-Za-z0-9-]+
-1个或多个ASCII字母,数字或/和-
字符。JS演示:
console.log("a(WI-FI) netwerken".replace(/^-+|-+$|[^A-Za-z0-9-]+/g, ""));
console.log("--a(WI-FI) netwerken".replace(/^-+|-+$|[^A-Za-z0-9-]+/g, ""));
console.log("a(WI-FI) netwerken--".replace(/^-+|-+$|[^A-Za-z0-9-]+/g, ""));