作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有这个字符串:
var a='abc123#xyz123';
我想构建 2 个正则表达式替换函数:
1) 用 '*'
替换所有确实有 future '#'
的字符(不包括'#')
所以结果应该是这样的:
'******#xyz123'
2) 将所有不有 future '#'
的字符替换为'*'
(不包括'#')
所以结果应该是这样的:
'abc123#******'
我尝试了什么:
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/
我有一个看起来像这样的字符串: text = "9) 9 的文本\r\n10) 10 的文本\r\n11) 11 的文本\r\n12) ...\r\n123) 123 的文本" 我正在尝试将其拆分如下
下一代的 3D Tiles 前瞻 原文:Introducing 3D Tiles Next, Streaming Geospatial to the Metaverse 原文发布时间:2021年11月
我有一个使用正则表达式回顾的 string.replace() 函数。 myString.replace(/(?
我是一名优秀的程序员,十分优秀!