簡體   English   中英

替換正則表達式中的最后匹配

[英]Replace Last Match in Regex

我有一個自動完成的用戶標記系統,填充@符號后面的用戶名。 我有這個問題,我有兩個匹配子字符串的用戶。 例如:

Tagging @billy and @b當用戶使用名為(例如)@brendan的用戶填寫@b標記時,它將替換@billy標記。 如何倒退並僅替換最后一個標簽?

編輯:這是我目前的解決方案,但感覺很糟糕。 有沒有辦法只用RegEx做到這一點?:

function tagUser (chosenUsername) {
  var userRegex = new RegExp('(^|\\s)@([' + lastUserTag() + ']*)$', 'gi');
  var caption = $("#example").val();
  var match = caption.match(userRegex);

  var lastMatch = match[match.length - 1];
  $("#example").val(caption.replace(lastMatch, " @" + chosenUsername));
}

不確定我是否完全理解你的問題。 但是只是為了讓你知道你可以使用負向前瞻來替換最后匹配的文本,如下所示:

var str='@billy and @b';
str = str.replace(/@b\b(?!.*?@b\b)/, 'brendan');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM