在正则表达式中的一个短语之后获取所有内容?

时间:2014-08-16 00:55:38

标签: javascript regex

我试图使用正则表达式来获取javascript中字符串中的一个短语之后的所有内容。

短语为call memy name's,或my name ismy namesI amI'm

所以我希望字符串中的那些短语之后的所有内容。

我试图这样做,但它捕捉到了一切。不仅是之后的文字。

/call\s+me(.*)|my\s+name\s+is(.*)|my\s+name's(.*)|my\s+names(.*)|Im(.*)|I\s+am(.*)|I'm(.*)/i.exec(string));

我该如何正确地做到这一点?

2 个答案:

答案 0 :(得分:4)

之后的文本将在捕获组中。它将位于不同的捕获组中,具体取决于匹配的前缀。因此,最好只将前缀放在|替代品中,并且只有一个捕获组:

var result = str.match(/(?:call me|my name's|my name is|my names|I am|I'm)(.*)/)

现在result[1]将包含短语之后的文字。

DEMO

答案 1 :(得分:0)

尝试positive lookbehind assertion

(?<=call me|my name's|my name is|my names|I am|I'm).*

请参阅 this demo

修改

这个正则表达式不会在Javascript上工作​​(请参阅@ Barmar的Javascript使用答案)