我需要一个正则表达式,以便将字符串{somestr}
转换为:somestr
,但我只需要替换花括号的第一次和最后一次出现,因为如果在字符串的中间 - 不应该删除。
到目前为止,我已经尝试过:
传入的字符串var path = '/claims/{id}'
var pathWithoutBraces = path.replace("\{", ":").replace("\}", "")
输出为/claims/:id
,这是预期的,但它仍将替换整个字符串中的所有进一步出现
答案 0 :(得分:1)
您可以使用以下内容替换第一个和最后一个{
和}
var s='/claims/{abc{de}}f}';
document.write(s.replace(/{(.*)}/,':$1'));

答案 1 :(得分:1)
这应该只替换第一个和最后一个括号:
str.replace(/({)(.*)(})/, ':$2');
答案 2 :(得分:0)
如何: /({)([}\w]+)(})/
?见https://regex101.com/r/pW4fU7/2
这将要求并捕获一个开始和结束的花括号,并且还将捕获两者之间的单词字符(和结束大括号)。以下是您的示例摘录:
var path = '/claims/{id}';
document.write(path.replace(/({)([}\w]+)(})/,':$2'));
请注意,您可能需要添加到角色类,具体取决于您的实际环境。也许你应该添加更多的例子。
答案 3 :(得分:0)
应该执行所需操作的正则表达式如下:/^[^{]*(?:{(.*)})[^}]*$/
我用来确认这是否有用的测试字符串是starting {{ The test string } here } and here } ends
该正则表达式中间的捕获组((.*)
)然后从该测试字符串中捕获以下文本:{ The test string } here } and here