2014-05-15 215 views
1

代替我有一點很難做到的字符串替換爲以下內容。JS字符串與正則表達式

我想更換 - 用–但是當遭遇 - 用數字(或左或右)環繞,只是刪除空格。只是想知道是否有可能?

原始--------------------------

這些天來,家庭凝聚力並不像它那樣簡單聲音。我們都導致忙亂的生活,和所有的家庭成員- 即使孩子 - 可以有繁忙的日程。此外,來自電視和社交媒體的不斷干擾可能會影響父母與孩子之間以及兄弟姐妹之間的有意義的互動。 爲了慶祝全國家庭周(月15日 - 21日月),我們已經把更好的家庭凝聚力這十個步驟。

過濾器後--------------------------

這些天來,家庭凝聚力是不是那麼簡單聽起來像。我們都導致忙亂的生活,和所有的家庭成員甚至–小孩子可以–有繁忙的日程。此外,來自電視和社交媒體的不斷干擾可能會影響父母與孩子之間以及兄弟姐妹之間的有意義的互動。 爲了慶祝全國家庭周(月15日至21月),我們已經把這些十步更好的家庭凝聚力。

我得到了什麼至今.--------------------------

var data = document.getElementById('textarea').value; 

var re = /\s-\s/gi; 
var newstr = data.replace(re, " – "); 

document.getElementById('textareaFilter').value = newstr; 

回答

2

你可以這樣做使用accepts a function處理匹配的字符串的一個變體replace()方法和一個額外的步驟。

這裏有一個jsFiddle example和最相關的代碼:

var text = 'These days, family bonding isn’t as simple as it sounds. We all lead hectic lives, and all family members - even small kids - can have busy schedules. Plus, constant distractions from TV and social media can get in the way of meaningful interactions between parents and kids, as well as between siblings. To celebrate National Families Week (15th - 21st May), we’ve put together these ten steps for better family bonding.'; 
var re1 = /(\d\s-\s|\s-\s\d|\d\s-\s\d)/gi 
var re2 = /\s-\s/gi; 
var newstr = text.replace(re1, function(match) { 
    return match.replace(/\s/gi, ''); 
}); 
newstr = newstr.replace(re2, " – "); 
document.getElementById('textareaFilter').value = newstr; 
+0

不知道你可以在替換做一個匹配,這對代碼,也是一個教訓真棒謝謝:) – Bruce