JavaScript正则表达式排除字符



>我有这样的文字

一:_c

答:_c

我正在使用的正则表达式是/:(.*)/g,但它也捕获了":_">

我想实现-->c

我得到了什么-->:_c

如何排除它们?

P.S.:用下划线代替空格,便于理解。

编辑:我想捕获":"后面的所有内容

EDIT2:这是带有文本的正则表达式,如您所见,它还捕获了":

如果您知道下划线将始终位于c前面,则可以这样做:/:_?(.*)/g

_?匹配 0 或 1 下划线,因此您只会得到c

console.log('a b:_c'.match(/:_?(.*)/)[1])

你想得到字符串"c"还是最后一个字符?

var a = "a:_c a b:_c";
/c/g.exec(a)
/.$/g.exec(a)

编辑以匹配评论:

使用以下命令删除":_"之前的所有内容,包括":_">

a.replace(/.*:_*/, '')

对于空间:

a.replace(/.*:s*/, '')

您可以使用:/:s(.*)/g.

这将在开始捕获之前:后捕获单个空格:

a b: c => "c"
a: c   => "c"

var re = /:s(.*)/;
var tests = [
'a: c',
'a: cat',
'b a: test',
'a: c',
'Test: this is the rest of the sentence',
];
for (var i = 0; i < tests.length; i++) {
console.log('TEST: ', '"' + tests[i] + '"');
console.log('RESULT: "' + tests[i].match(re)[1] + '"');
}

注意:您必须从匹配中获取第一个捕获组。否则,您将无法获得预期的结果。请参阅如何在 JavaScript 正则表达式中访问匹配的组?以获取有关如何执行此操作的信息。

最新更新