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

Koe*_*der 2 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());
        //console.log("Blurred name_nl");
    });
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,它应该给出输出,其中我允许第一个字符是 AZ az 和 0-9,之后 - 也被允许。

但是当我测试它时,(WI-FI) network我得到(wi-fi) network

我已经在正则表达式测试仪上对其进行了测试,它看起来很棒但是 Javascript 不喜欢它...

https://regex101.com/r/ev3uFR/2

如何删除每个特殊字符,而不是 - 并将它们作为第一个和最后一个字符删除?

Wik*_*żew 5

我建议删除字符串开头和结尾的连字符,并删除除字母数字和-任何其他上下文中的所有字符:

.replace(/^-+|-+$|[^A-Za-z0-9-]+/g, "")
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示

细节

  • ^-+- 字符串位置的开头和 1 个或多个-字符
  • | -或者
  • -+$ - 字符串末尾的 1 个或多个连字符
  • | - 或者
  • [^A-Za-z0-9-]+- 1 个或多个 ASCII 字母、数字或/和-字符。

JS演示:

.replace(/^-+|-+$|[^A-Za-z0-9-]+/g, "")
Run Code Online (Sandbox Code Playgroud)