正则表达式使用@here或空白来逃避<! - here | @here - >的所有匹配

时间:2017-07-28 16:12:26

标签: javascript regex replace

我有一个字符串,例如:

var myString = 'Hi, <!here|@here>';

我试图通过API逃避可能被误解为HTML的东西,认为正则表达式是完美的,但我无法理解。

运行上述字符串后的理想输出:

  

嗨,@ here

这是我到目前为止所尝试的:

var result = myString.replace(/(<!.*\|.*)@.*(>)/gm,' ');

console.log(string,result);

我在这里得到一个空白的回复。在此期间使用regex101进行测试。

2 个答案:

答案 0 :(得分:2)

存在点星.* - 过于贪婪 - 可能会在正则表达式中出现问题。你根本不需要尾随和引导点星,否则他们会消耗输入字符串中的所有内容。

另外请记住,如果您想在某个特定点停留,请不要使用点星,因为它可能不会停在正确的位置。

&#13;
&#13;
var myString = 'Hi, <!here|@here>';
var result = myString.replace(/<!(.*?)\|@\1>/g, '@$1');
console.log(result);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

你应该使用这个

myString.replace(/(<!.*\|)(.*)>/g, '$2');

或懒惰的正则表达式版本:/(<!.*?\|)(.*)>/g(这取决于你希望它如何工作)