某个字符串后的javascript多行匹配

时间:2014-10-16 20:18:30

标签: javascript regex match

在本文中:

my-Word: Value-1
othertext
my-Word: Value-2
othertext
my-Word: Value-3
...

我需要匹配包含([A-Za-z0-9-]+)

的所有字符串

仅在字符串my-Word:之后,但不包括:my-Word:

所以我只需匹配:Value-1Value-2Value-3等。

我该怎么做?

3 个答案:

答案 0 :(得分:1)

你可以使用积极的lookbehind:

(?<=my-Word:\s*)([A-Za-z0-9-]+)

答案 1 :(得分:0)

使用捕获组捕获紧随my-Word:

之后的字母数字字符
> var s = "my-Word: Value-1\nothertext\nmy-Word: Value-2\nothertext\nmy-Word: Value-3"
undefined
> var re = /my-Word:\s*([A-Za-z0-9-]+)/gm;
undefined
> var m;
undefined
> while ((m = re.exec(s)) != null) {
... console.log(m[1]);
... }
Value-1
Value-2
Value-3

答案 2 :(得分:0)

您必须使用 lookbehind 正则表达式,例如:

.(?<=my-Word: [A-Za-z0-9-])[A-Za-z0-9-]+

但遗憾的是,javascript不支持lookbehind,所以你可以使用 lookahead 正则表达式。为此你需要首先反转原始字符串,最后是匹配的部分:

[A-Za-z0-9-]+(?= :droW-ym)

DEMO