javascript正则表达式排除字符

时间:2017-07-27 18:48:06

标签: javascript regex

我有这样的文字

a b:_c

一个:_c

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

我想要实现 - > c

我得到了什么 - > :_ c

如何排除它们?

P.S。:将空格替换为下划线,以便于理解。

编辑:我想抓住':'

背后的一切

EDIT2:这里有regexr文字,正如您所见,它还会捕捉':'

3 个答案:

答案 0 :(得分:0)

您可以使用:/:\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] + '"');
}

注意: 必须 从匹配中获取第一个捕获组。如果不这样做,您将无法获得所需的结果。有关如何执行此操作的信息,请参阅How do you access the matched groups in a JavaScript regular expression?

答案 1 :(得分:0)

如果您知道下划线将始终作为c的前缀,您可以这样做: /:_?(.*)/g

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

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

答案 2 :(得分:0)

您想获取字符串“c”还是最后一个字符?

var a = "a:_c a b:_c";

/c/g.exec(a)

/.$/g.exec(a)

编辑以匹配评论:

使用以下内容删除“:_”

之前的所有内容
a.replace(/.*:_*/, '')

对于空间:

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