【发布时间】:2011-10-09 14:03:55
【问题描述】:
我正在研究满足我需求的正则表达式(实际上是正则表达式)。 :)
我需要替换给定的字符串(名为title)并返回slug:
在有一个空格的地方用一个下划线替换一个空格。如果有多个空格,则只应替换一个空格。这很难解释,但我会尝试用例子来解释。
Hi and hello, world!将是Hi_and_hello,_world!,但如果在“世界”之前有两个空格,那么它将是Hi_and_hello,_ world!,将所有剩余的空白替换为空 (
''),替换所有不需要的字符(白名单:
a-z、A-Z、0-9和下划线)。换句话说,如果符号不在白名单中,则应将其替换为空(''),从下划线修剪开头和结尾;
最终结果应该是:
Hello, world! I'm known as daGrevis. :)
...到:
Hello_world_Im_known_as_daGrevis
我需要在 JavaScript 中做的所有事情。这是我到目前为止得到的:
slug = title.replace(/\s+/g, '_');
slug = title.replace(/\s+/g, '');
slug = title.replace(/[^\w0-9a-zA-Z]/g, '');
我不擅长正则表达式,所以不要嘲笑我。 :D 感谢您的建议!
【问题讨论】:
-
我不明白第二条规则,剩下的空格是什么,你已经用第一条规则替换它们了吗?
标签: javascript regex replace