gpt4 book ai didi

javascript - 使用 Regex 正/负前瞻替换字符?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:48:47 25 4
gpt4 key购买 nike

我有这个字符串:

var a='abc123#xyz123';

我想构建 2 个正则表达式替换函数:

1) 用 '*' 替换所有确实有 future '#'的字符(不包括'#')

所以结果应该是这样的:

'******#xyz123'

2) 将所有有 future '#'的字符替换为'*'(不包括'#')

所以结果应该是这样的:

'abc123#******'

我尝试了什么:

For the positive lookahead :

var a='abc123#xyz123';
alert(a.replace(/(.+(?=#))+/ig,'*')); //*#xyz123 --wrong result since it is greedy...

问题:

如何让我的正则表达式按预期工作?

最佳答案

第一部分使用前瞻:

repl = a.replace(/.(?=[^#]*#)/g, "*");
//=> "******#xyz123"

解释:

此正则表达式使用先行查找后跟 # 的任何字符,并将其替换为 *

第二部分使用替换回调:

repla = a.replace(/#(.*)$/, function(m, t) { return m[0] + t.replace(/./g, '*'); } );
//=> abc123#******

解释:

此代码在 # 之后查找文本。在回调函数中用星号替换每个字符。

关于javascript - 使用 Regex 正/负前瞻替换字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19659826/

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