Javascript 如何在正则表达式中允许a-z 0-9和破折号
我有一个CMS,想在搜索引擎中创建一个不错的slug 我试着用正则表达式来实现它,但看起来它完全忽略了 举个小例子:Javascript 如何在正则表达式中允许a-z 0-9和破折号,javascript,regex,Javascript,Regex,我有一个CMS,想在搜索引擎中创建一个不错的slug 我试着用正则表达式来实现它,但看起来它完全忽略了 举个小例子: $('#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());
$('#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)网络上测试它时,我得到了(WI-FI)网络
我已经在正则表达式测试仪上测试过了,看起来很棒
但是Javascript不喜欢它
如何删除每个特殊字符,而不是-并将其作为第一个和最后一个字符删除?我建议删除字符串开头和结尾的连字符,并删除除字母数字和-
以外的所有字符:
.replace(/^-+|-+$|[^A-Za-z0-9-]+/g, "")
看
详细信息
^-+
-字符串位置的开头和一个或多个-
字符
|
-或
-+$
-字符串末尾有一个或多个连字符
|
-或
[^A-Za-z0-9-]+
-1个或多个ASCII字母、数字或/和-
字符
JS演示:
console.log(“a(WI-FI)网络”。替换(/^-+|-+$$|[^a-Za-z0-9-]+/g,”);
console.log(“--a(WI-FI)netwerken”)。替换(/^-+|-+$$|[^a-Za-z0-9-]+/g,”);
console.log(“a(WI-FI)网络--”。替换(/^-+|-+$$|[^a-Za-z0-9-]+/g,”)代码>试试@WiktorStribiżew你是天才。这有多容易:)也许你可以把它作为一个答案,这样我就可以把它标记为已解决