前面的空間,我需要一個字符串轉換是這樣的:正則表達式匹配不能用逗號
tag, tag2, longer tag, tag3
到:
tag, tag2, longer-tag, tag3
爲了這短暫的,我需要更換沒有逗號分開的空間連字符和我需要在Javascript中這麼做。
前面的空間,我需要一個字符串轉換是這樣的:正則表達式匹配不能用逗號
tag, tag2, longer tag, tag3
到:
tag, tag2, longer-tag, tag3
爲了這短暫的,我需要更換沒有逗號分開的空間連字符和我需要在Javascript中這麼做。
我認爲這應該工作
var re = new RegExp("([^,\s])\s+" "g");
var result = tagString.replace(re, "$1-");
編輯:Blixt的觀察後更新。
([a-zA-Z]){1,}
也許吧?未經測試。類似的東西。
mystring.replace(/([^,])\s+/i "$1-");
有一個更好的方式來做到這一點,但我不記得的語法
我相信你想要'g'的標誌,而不是'i'的標誌。首先,沒有字符不區分大小寫,其次,如果沒有'g'標誌,它只會取代第一個匹配。此外,你在那裏忘了逗號'=)' – Blixt 2009-08-14 12:59:24
[^,]
=不是逗號
編輯對不起,沒注意更換前。現在我已經更新了我的答案:
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 : '-';
});
我不知道你可以放一個「。」在JavaScript中的字符串文字後。很高興知道,謝謝! – 2009-08-14 12:32:28
我接受這個,因爲它是第一個工作。不能相信我忘了$ 1 ... – 2009-08-14 12:32:20
正如下面的建議你可以使用\ s而不是空間,如果你想匹配標籤等,但我把它從字面上看成是空格:) – Runeborg 2009-08-14 12:36:35
不要認爲後面跟一個逗號兩個或多個逗號將在標籤前加上 - :'abc, def'變成'abc,-def'你想要的是'/([^,\ s])\ s +/g',替換爲'「 $ 1「'。 –
Blixt
2009-08-14 12:56:00