检查字符串中单词的第一个字符以@开头

时间:2018-05-31 22:35:17

标签: javascript regex

前几天我发布了一个类似的问题,但我不太明白这个原则。是否有解释替换函数与正则表达式相结合的良好资源?

无论如何,现在我遇到以下问题:以@开头的字符串应放在链接中。因此@test应替换为<a href="/test"> @test </a>

此外,这些规则应适用:

  1. 该字符串只能包含一个@,它位于开头。
  2. 如果有更多字符串,也请替换它们。我认为你可以把/g放在正则表达式后面吗?
  3. 这是我到目前为止所做的:

    value = "is @test";
    var text = value.replace(/^.*(@)(\w+).*$/, "<a href='$2'>$1$2</a>");
    

    我的输出

    <a href="test">@test</a>
    

    修改 该链接现在正在运行。但是,&#34;这个词是&#34;不见了。

2 个答案:

答案 0 :(得分:0)

执行.replace()时,您需要在RegExp中包含您要替换的所有字符,并保留您要用括号保留的字符。

&#13;
&#13;
var test = 'is @test';
function makeAt(string){
  return string.replace(/^.*(@)(\w+).*$/, "<a href='$2'>$1$2</a>");
}
console.log(makeAt(test));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您需要捕获环境文本:

value = "is @test or what";
var text = value.replace(/^(.*)@(\w+)(.*)$/, "$1<a href='$2'>@$2</a>$3");

或者只是捕获更少:

var text = value.replace(/@(\w+)/, "<a href='$1'>@$1</a>");
相关问题