poi*_*oae 9 javascript regex jquery
我想将所有被包围的-字符串替换为括在其中的字符串~,但是如果该字符串再次被括起来则不能*.
举个例子,这个字符串......
The -quick- *brown -f-ox* jumps.
Run Code Online (Sandbox Code Playgroud)
......应该成为......
The ~quick~ *brown -f-ox* jumps.
Run Code Online (Sandbox Code Playgroud)
我们看到-只有在不在内的情况下才会被替换*<here>*.
我现在的javascript-regex(不管它是否被括起来都不关心*):
var message = source.replace(/-(.[^-]+?)-/g, "~$1~");
Run Code Online (Sandbox Code Playgroud)
编辑:请注意,可能存在奇数个*s.
对于正则表达式来说这是一件棘手的事情。我想我会做这样的事情:
var msg = source.replace(/(-[^-]+-|\*[^*]+\*)/g, function(_, grp) {
return grp[0] === '-' ? grp.replace(/^-(.*)-$/, "~$1~") : grp;
});
Run Code Online (Sandbox Code Playgroud)
它会查找或 -组,并且*仅对虚线组执行替换。一般来说,“嵌套”语法对于正则表达式来说是具有挑战性的(或不可能的)。(当然,作为对问题注释的评论,有一些特殊情况 - 悬空元字符 - 也会使问题变得复杂。)
| 归档时间: |
|
| 查看次数: |
646 次 |
| 最近记录: |