我有一个 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
如何删除每个特殊字符,而不是 - 并将它们作为第一个和最后一个字符删除?
我建议删除字符串开头和结尾的连字符,并删除除字母数字和-任何其他上下文中的所有字符:
.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)
| 归档时间: |
|
| 查看次数: |
1120 次 |
| 最近记录: |