我有这种格式的字符串
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<div class="form-group">
<div class="form-inline">
<h5 class="mr-sm-2">From date: </h5>
<input class = " mr-sm-2 form-control input-sm" id = "datepicker_from_date" style = "width:100px;" /></h5>
<h5 class="mr-sm-2" >To date:</h5>
<input class = "form-control mr-sm-2 input-sm" id = "datepicker_to_date" style = "width:100px;" />
<input type="submit" class="btn btn-success align-text-bottom" value="Create" onclick="location.href='@Url.Action("Index", "Calender")'" />
</div>
</div>
我想找到单词{match}和所有后续字符,直到前一个}。我想要的输出是这样:
{a}| {match} {b} {c}
{a} {b}: {match} {c}
{a} {b}: {c} -{match}
我已经尝试过此正则表达式,但是与第一个}匹配,而不是与之匹配的
{a} {b} {c}
{a} {b} {c}
{a} {b}: {c}
答案 0 :(得分:0)
您可以使用以下模式:
[^}]+{match}
[^}]+
否定的字符集。除}
以外的其他任何一项。{match}
文字子字符串{match}
。一无所获:
var s = '{a}| {match} {b} {c}'
var t = '{a} {b}: {c} -{match}'
console.log(s.replace(/[^}]+{match}/g, ""));
console.log(t.replace(/[^}]+{match}/g, ""));
正则表达式演示here。
答案 1 :(得分:0)
您可以匹配所需内容,并在组中捕获不需要的内容。在替换使用组1中。
const regex = /[^{}]+{match\}|(\{[^}]+\})/g;
const str = `{a}| {match} {b} {c}
{a} {b}: {match} {c}
{a} {b}: {c} -{match}`;
const subst = `$1`;
const result = str.replace(regex, subst);
console.log(result);