1

@ 記号の後に続くユーザー名を入力するオートコンプリート ユーザー タグ システムがあります。ただし、一致する部分文字列を持つ2人のユーザーがいるというこの問題があります。例えば:

Tagging @billy and @b ユーザーが (たとえば) @brendan という名前のユーザーで @b タグを入力すると、@billy タグが置き換えられます。前に戻って最後のタグだけを置き換えるにはどうすればよいですか?

編集:これは私の現在の解決策ですが、ぎこちなく感じます。正規表現だけでこれを行う方法はありますか?:

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

1 に答える 1

3

あなたの問題を完全に理解したかどうかはわかりません。ただし、否定先読みを使用して、最後に一致したテキストのみを次のように置き換えることができることをお知らせします。

var str='@billy and @b';
str = str.replace(/@b\b(?!.*?@b\b)/, 'brendan');
于 2013-03-27T20:51:34.357 に答える