我有一个正则表达式,用连字符替换所有非字母数字字符。
slugName = $(this).val().replace(/[^a-z0-9]/gi, '-');
这样可行,但由于这是根据用户输入生成的,我最终可能会得到my-awesome-title---stuff
这样的结果,该结果可能已输入为my awesome title & stuff
正如你所看到的,我现在有三个连续的连字符,它们并不像一个漂亮的URL那样具有吸引力。
如果有连续的连字符行,是否有某种方法可以替换此类事件?
答案 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, '-')