繁体   English   中英

JavaScript 正则表达式替换如果超过 n 次出现

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM