2010-09-30 106 views
20

我在尋找如何來替換最後一個問題替換字符的最後一次出現在字符串「‘與’和」的字符串:如何使用javascript

有了這個字符串: 爲test1, TEST2,TEST3

,我想結束了: TEST1,TEST2和TEST3

我想是這樣的:

var dialog = 'test1, test2, test3';  
dialog = dialog.replace(new RegExp(', /g').lastIndex, ' and '); 

,但它不工作

回答

36
foo.replace(/,([^,]*)$/, ' and $1') 

使用$(線結束)錨給你你的位置,並尋找到逗號指標不包括任何進一步的逗號權的模式。

編輯:

上述工作正是爲了定義(儘管替換字符串是任意寬鬆),但根據從評論下面更好批評的要求反映了原始需求的精神。

foo.replace(/,\s([^,]+)$/, ' and $1') 
+0

+1,可能比使用'\ w'更好,因爲它更具包容性,例如:http://jsbin.com/utedu/2 – 2010-09-30 10:04:02

+0

這也匹配'test1,test2,'併產生'test1,test2和'爲了它。此外,它爲原始輸入字符串插入冗餘空格字符,因爲它忘記匹配','後的空格字符。 – splash 2010-09-30 10:50:07

+1

@splash - 請參閱編輯。我非常有信心,如果要求比表達的更詳細,OP本人可以自己做出修改,我不想推定人們真正意圖說什麼。 – annakata 2010-09-30 10:59:50

4
result = dialog.replace(/,\s(\w+)$/, " and $1"); 

$1指的是本場比賽的第一個捕獲組(\w+)

+1

例如:http://jsbin.com/utedu – 2010-09-30 10:02:27

+0

這個wi如'test-1,test-2,test-3'這樣的字符串會失敗,但我相信OP可以自己做出這樣的改編。 – annakata 2010-09-30 11:02:03

+0

這是對的@annakata。 – splash 2010-09-30 11:22:26

0

正則表達式搜索模式\ s([^,] +)$

Line1: If not, sdsdsdsdsa sas ., sad, whaterver4 
Line2: If not, fs sadXD sad , ,sadXYZ!X 
Line3: If not d,,sds,, sasa sd a, sds, 23233 

與模式搜索發現 線路1:whaterver4 3號線:23233

然而犯規找到2號線:sadXYZ! X
哪些只是缺少一個空白