2015-06-19 53 views
1

我有兩個要求,第一,我想用空值替換文本開始和結尾的「 - 」符號。其次,如果有任何連續的「 - 」符號,應該用一個「 - 」符號代替。正則表達式刪除多個連續的「 - 」

如果可能的話,請以單一模式提供兩種要求的代碼。

CODE:

//1.) 
// replace more than 1 "-" in b 
// Expected Output : -asdas-sadf-asdasd-ju 

var a = "--asdas-sadf----asdasd---ju"; 
a = a.replace(/-{2,}/,""); 
//alert(a); 

//2.) 
// remove last "-" and starting "-" from b that is "das-" - after das needs to be removed 
// Expected output : welcome/asasdgrd/asd-ast-yret-das/456 

var b = "-welcome/asasdgrd/asd-ast-yret-das-/456" 
b = b.replace(/[-$]/,""); 
//alert(b); 

提琴手鍊接:

http://jsfiddle.net/nj5j0yeq/1/

+0

「*應該替換成一個'-'符號*」 - 您已經命名瞭解決方案。目前您正在執行'.replace(...,「」)' – Bergi

回答

1

您需要使用捕獲組。

var s = "--asdas-sadf----asdasd---ju"; 
 
alert(s.replace(/^-+|-+$|(-)+/gm, "$1"));

+0

爲什麼不採用最後一個尾部? 'var a =「--asdas-sadf ---- asdasd --- ju ------」; a = a.replace(/ - {2,}/g,「 - 」)。replace(/^- + | - + $ /,「」);' – mplungjan

+1

@mplungjan,因爲您忘記了使用全局修飾符第二次更換。 'alert(a.replace(/ - {2,}/g,「 - 」)。replace(/^- + | - + $/g,「」));'。因爲第二個替換需要進行多於一個匹配,即第一個和最後一個匹配,則需要包含該匹配,否則只匹配第一個連字符。 –

+0

Doh! .......... – mplungjan

0

您可以檢查甚至--時間,可與奇-

var a = "--asdas-sadf----asdasd---ju"; 
var b= a.split("--").join("-"); 
var c = b; 
var d = c.split("--").join("-"); 
console.log(d); 

或'無功解析度= str.split(更換/^- + $ |( - )+ /)加入( 「」)。 console.log(res);

`

+0

您能否詳細說明您的答案,並添加關於您提供的解決方案的更多描述? – abarisone