javascript - 如何在正则表达式中允许 az 0-9 和破折号
问题描述
我有一个 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");
});
在上面的示例中,它应该给出我允许第一个字符为 AZ az 和 0-9 的输出,之后也允许使用 -。
但是当我测试它时,(WI-FI) network
我得到了(wi-fi) network
我已经在正则表达式测试器上对其进行了测试,它看起来很棒但是 Javascript 不喜欢它......
https://regex101.com/r/ev3uFR/2
如何删除每个特殊字符,而不是 - 并将它们作为第一个和最后一个字符删除?
解决方案
我建议删除字符串开头和结尾的连字符,并删除除字母数字和-
任何其他上下文中的所有字符:
.replace(/^-+|-+$|[^A-Za-z0-9-]+/g, "")
请参阅正则表达式演示。
细节
^-+
- 字符串位置的开头和 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, ""));
推荐阅读
- reactjs - 在 React App 中录制视频并上传到 Dropbox
- windows - Padre:缺少“perl512.dll”
- html - 如何让兄弟元素在悬停时一起响应?
- python - 使用 matplotlib.pyplot 和 matplotlib.animation 的 Python 动画?
- python - 如何用同一列中已有的值填充列中的缺失值?
- gitlab-ci - 变量替换在 Windows GitLab-Runner 上不起作用
- python - 如何通过键将一个字典列表拆分为两个字典列表
- javascript - 在打印视图中显示背景图像,但在 Web 浏览器视图中隐藏
- android - Facebook API - 400 错误请求 button_auto_detection_device_selection
- javascript - 在我的 javascript 代码中使用 spawn 运行 python 时出现错误