【发布时间】:2009-08-14 12:20:20
【问题描述】:
我需要像这样转换一个字符串:
tag, tag2, longer tag, tag3
到:
tag, tag2, longer-tag, tag3
为了简短起见,我需要用连字符替换不以逗号开头的空格,并且我需要在 Javascript 中这样做。
【问题讨论】:
标签: javascript regex
我需要像这样转换一个字符串:
tag, tag2, longer tag, tag3
到:
tag, tag2, longer-tag, tag3
为了简短起见,我需要用连字符替换不以逗号开头的空格,并且我需要在 Javascript 中这样做。
【问题讨论】:
标签: javascript regex
我认为这应该可行
var re = new RegExp("([^,\s])\s+" "g");
var result = tagString.replace(re, "$1-");
编辑:在 Blixt 观察后更新。
【讨论】:
abc,<space><space>def 变为 abc, -def 你想要的是 /([^,\s])\s+/g 替换 "$1-"。跨度>
mystring.replace(/([^,])\s+/i "$1-");有更好的方法,但我记不住语法
【讨论】:
g 标志,而不是i 标志。首先,没有字符不区分大小写,其次,没有g 标志,它只会替换第一个匹配项。另外,你忘记了逗号=)
[^,] = 不是逗号
编辑抱歉,之前没有注意到替换。我现在更新了我的答案:
var exp = new RegExp("([^,]) ");
tags = tags.replace(exp, "$1-");
【讨论】:
text.replace(/([^,]) /, '$1-');
【讨论】:
不幸的是,Javascript 似乎不支持负面的lookbehinds,所以你必须使用这样的东西(修改自here):
var output = 'tag, tag2, longer tag, tag3'.replace(/(,)?t/g, function($0, $1){
return $1 ? $0 : '-';
});
【讨论】:
[^,] - 第一个字符不是逗号,第二个字符是空格,它会搜索那种字符串
【讨论】:
([a-zA-Z] ){1,}
也许?未测试。类似的东西。
【讨论】: