如果超过n次,则使用JavaScript正则表达式替换

时间:2011-05-25 12:48:23

标签: javascript regex slug

我有一个正则表达式,用连字符替换所有非字母数字字符。

slugName = $(this).val().replace(/[^a-z0-9]/gi, '-');

这样可行,但由于这是根据用户输入生成的,我最终可能会得到my-awesome-title---stuff这样的结果,该结果可能已输入为my awesome title & stuff

正如你所看到的,我现在有三个连续的连字符,它们并不像一个漂亮的URL那样具有吸引力。

如果有连续的连字符行,是否有某种方法可以替换此类事件?

4 个答案:

答案 0 :(得分:6)

这样的事情:

slugName = $(this).val().replace(/[^a-z0-9]+/gi, '-');

应使用1个连字符替换非字母数字的一个或多个字符实例。在这种情况下,“+”表示。的一个或多个实例。

答案 1 :(得分:2)

使用另一个正则表达式折叠多个破折号:

slugName = slugName.replace(/-+/g, '-');

答案 2 :(得分:1)

+添加到char类:

'my awesome title & stuff'.replace(/[^a-z0-9]+/gi, '-')

结果:

"my-awesome-title-stuff"

答案 3 :(得分:0)

只需用一个

替换连续的连字符串
slugName = $(this).val().replace(/[^a-z0-9]/gi, '-').replace(/[\-]+/g, '-')