Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在正则表达式中允许a-z 0-9和破折号_Javascript_Regex - Fatal编程技术网

Javascript 如何在正则表达式中允许a-z 0-9和破折号

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());

我有一个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());
        //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你是天才。这有多容易:)也许你可以把它作为一个答案,这样我就可以把它标记为已解决