2015-09-17 33 views
1

我需要一個正則表達式來將字符串{somestr}轉換爲:somestr,但我只需要替換第一個和最後一個大括號,因爲如果有的話發生在字符串中間 - 不應該被刪除。JavaScript正則表達式 - 替換字符的第一個和最後一個字符

到目前爲止,我曾嘗試:

輸入字符串var path = '/claims/{id}'

var pathWithoutBraces = path.replace("\{", ":").replace("\}", "") 

輸出是/claims/:id這是我們所期望的,但它仍然會取代所有的進一步OCCURENCES整個字符串中

+0

我已更新原始問題 –

+0

粗略地說,我需要字符串'/ claims/{{id}}'爲'/ claims /:{id}' –

回答

0

您可以使用以下內容替換第一個和最後一個{}

var s='/claims/{abc{de}}f}'; 
 

 
document.write(s.replace(/{(.*)}/,':$1'));

1

這應該只替換第一個和最後括號:

str.replace(/({)(.*)(})/, ':$2');

0

如何:/({)([}\w]+)(})/?請參閱https://regex101.com/r/pW4fU7/2

這將要求並捕獲一個打開和關閉的花括號,並且還會捕獲單詞字符(並關閉大括號)。下面是你的榜樣片段:

var path = '/claims/{id}'; 
 
document.write(path.replace(/({)([}\w]+)(})/,':$2'));

請注意,您可能需要添加到字符類,根據您的實際環境。也許你應該增加更多的例子。

0

應該做你所需要的正則表達式如下:/^[^{]*(?:{(.*)})[^}]*$/

我用來確認這是否會工作的測試字符串是starting {{ The test string } here } and here } ends

在正則表達式的中間(捕獲組(.*) )然後從該測試字符串中捕獲以下文本:{ The test string } here } and here

相關問題