Javascript Regex在“中仅查找冒号”;asdf:adsf“;但不是",;asdf:adsf“;
我试图使用regex只捕获像Javascript Regex在“中仅查找冒号”;asdf:adsf“;但不是",;asdf:adsf“;,javascript,regex,Javascript,Regex,我试图使用regex只捕获像asdf:adsf这样的东西中的冒号,它也可能看起来像a:b,asdf:b,b:asdf,123:b,2:1,等等。但是,它不应该匹配asdf:adsf,a:b,asdf:b,,123:b,2:1 到目前为止,我已经尝试了一系列不同的正则表达式,最接近的是: \x20*:\x20* // wrong because this captures all whitespace 试试这个。抓取捕获或组。参见演示 这将解决问题 我的另一个答案被删除了,之前发布了正则表达式
asdf:adsf
这样的东西中的冒号,它也可能看起来像a:b
,asdf:b
,b:asdf
,123:b
,2:1
,等等。但是,它不应该匹配asdf:adsf
,a:b
,asdf:b
,,123:b
,2:1
到目前为止,我已经尝试了一系列不同的正则表达式,最接近的是:
\x20*:\x20* // wrong because this captures all whitespace
试试这个。抓取捕获或组。参见演示
这将解决问题
我的另一个答案被删除了,之前发布了正则表达式。我很抱歉@vks,但我没有意识到javascript正则表达式与php正则表达式不同……这是针对JS的,所以我得到了一个错误。@maudulus您必须抓取捕获或组。不,它是匹配它们,但不是抓取它们。在右边的对话框中看到抓取的匹配,其中有“匹配1”、“匹配2”、“匹配3”。我不明白,为什么不/(:)/
?@thomas对于我正在做的事情来说,它太宽了……除了“asdf:asdf”之外,它还会匹配很多其他实例,请参见
\S(:)(?=\S)
var re = /\S(:)(?=\S)/gm;
var str = 'a:b\nasas:b\na:sadasd\na: sdffds\na :asfsd\na : dsfdf';
var m;
while ((m = re.exec(str)) != null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}
\w+(?=\S):(?=\S)\w+