[英]JavaScript Regex replace if more than n occurence
我有一个正则表达式,它用连字符替换所有非字母数字字符。
slugName = $(this).val().replace(/[^a-z0-9]/gi, '-');
这可以正常工作,但是由于这是从用户输入生成的,因此我最终可能会得到类似my-awesome-title---stuff
的结果,它可以作为my awesome title & stuff
输入
如您所见,我现在有三个连续的连字符,它们作为漂亮的 URL 并没有真正吸引人。
如果有连续的连字符,有什么方法可以替换这种情况?
像这样的东西:
slugName = $(this).val().replace(/[^a-z0-9]+/gi, '-');
应该用 1 个连字符替换一个或多个非字母数字字符实例。 在这种情况下,“+”表示一个或多个实例。
使用另一个正则表达式折叠多个破折号:
slugName = slugName.replace(/-+/g, '-');
将+
添加到字符 class:
'my awesome title & stuff'.replace(/[^a-z0-9]+/gi, '-')
结果:
"my-awesome-title-stuff"
只需用一个连字符替换连续的连字符
slugName = $(this).val().replace(/[^a-z0-9]/gi, '-').replace(/[\-]+/g, '-')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.