我有以下字符串:
@[A:B:C].[X:Y:Z].[P:Q:R] 1.C.3.s @[1:2:3].[2:0:0].[5dsh:cxcv:wew]
我想从以下格式中提取子字符串:
@[anything here].[anything here].[anything here]
在上面的情况下,输出子字符串应该是:
@[A:B:C].[X:Y:Z].[P:Q:R]
@[1:2:3].[2:0:0].[5dsh:cxcv:wew]
我有一个与这些子字符串匹配的正则表达式:
(@\w+|@(?:\[[^\]]+\]\.?)+)
为了测试这个正则表达式,我在这个 fiddle 中用 $
替换这些子字符串:http://jsfiddle.net/vfe50z0o/
正则表达式没有问题,因为它在这个 Regex101 演示中工作:https://regex101.com/r/aH9nK5/1
但是在 JSFiddle 上它不起作用。
这是 JavaScript 代码:
function myFunction() {
var re = /(@\w+|@(?:\[[^\]]+\]\.?)+)/;
var str = 'wewe@[s].[s].[s]xvcv';
var subst = '$';
var result = str.replace(re, subst);
alert(result);
}
最佳答案
如果您正在处理此类格式字符串,则以下正则表达式可以完成这项工作:
(@?\[[^[]*\]\.?){3}
如果括号的数量可以多于或少于3个,您可以使用+
:
(@?\[[^[]*\]\.?)+
关于Javascript 替换功能不适用于正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31140691/