匹配单词和后续字符

时间:2018-08-30 12:48:19

标签: javascript regex

我有这种格式的字符串

<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}

2 个答案:

答案 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中。

[^{}]+{match\}|(\{[^}]+\})

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);