gpt4 book ai didi

javascript - 使用正则表达式转义单词开头和冒号之间的特殊字符

转载 作者:行者123 更新时间:2023-11-28 14:46:19 26 4
gpt4 key购买 nike

我正在尝试转义字符串中的 2 个特殊字符,即 *?(如果它们出现在单词开头和冒号之间) .例如:

Input: creator*:Joh*n url:*google*
Output: creator\*:Joh*n url:*google*

这是我的 JavaScript 代码:

var str   = 'creator*:Joh*n url:*google*';
var regex = /\b([\w.]*)([\*\?]+)([\w.]*:)/g;
str = str.replace(regex, "$1\\$2$3");
alert(str);

它按我的预期工作。但是,有两个问题:

问题 1:如果 * 位于单词开头,则不起作用。

Input: *creator:Joh*n url:*google*
Output: *creator:Joh*n url:*google*
Expected result: \*creator:Joh*n url:*google*

问题2:如果有多个*,则不起作用。

Input: cre*ato*r:Joh*n url:*google*
Output: cre*ato\*r:Joh*n url:*google*
Expected result: cre\*ato\*r:Joh*n url:*google*

我的模式有什么问题吗?感谢您的帮助。

最佳答案

您可以通过以下方式做到这一点

function replace(str){
return str.replace(/([*?])(?=[^\s]*:)/g, '\\$1');
}


console.log(replace('creator*:John url:*google*'));
console.log(replace('*creator:John url:*google*'));
console.log(replace('cre*ato*r:John url:*google*'));
console.log(replace('creator*:John url:*google* author:Alice'));

参见regex101 demo

关于javascript - 使用正则表达式转义单词开头和冒号之间的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46283779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com