我有一个字符串,例如:
var myString = 'Hi, <!here|@here>';
我试图通过API逃避可能被误解为HTML的东西,认为正则表达式是完美的,但我无法理解。
运行上述字符串后的理想输出:
嗨,@ here
这是我到目前为止所尝试的:
var result = myString.replace(/(<!.*\|.*)@.*(>)/gm,' ');
console.log(string,result);
我在这里得到一个空白的回复。在此期间使用regex101进行测试。
答案 0 :(得分:2)
存在点星.*
- 过于贪婪 - 可能会在正则表达式中出现问题。你根本不需要尾随和引导点星,否则他们会消耗输入字符串中的所有内容。
另外请记住,如果您想在某个特定点停留,请不要使用点星,因为它可能不会停在正确的位置。
var myString = 'Hi, <!here|@here>';
var result = myString.replace(/<!(.*?)\|@\1>/g, '@$1');
console.log(result);
&#13;
答案 1 :(得分:0)
你应该使用这个
myString.replace(/(<!.*\|)(.*)>/g, '$2');
或懒惰的正则表达式版本:/(<!.*?\|)(.*)>/g
(这取决于你希望它如何工作)