我试图使用正则表达式来获取javascript中字符串中的一个短语之后的所有内容。
短语为call me
或my name's
,或my name is
或my names
或I am
或I'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));
我该如何正确地做到这一点?
答案 0 :(得分:4)
之后的文本将在捕获组中。它将位于不同的捕获组中,具体取决于匹配的前缀。因此,最好只将前缀放在|
替代品中,并且只有一个捕获组:
var result = str.match(/(?:call me|my name's|my name is|my names|I am|I'm)(.*)/)
现在result[1]
将包含短语之后的文字。
答案 1 :(得分:0)
尝试positive lookbehind assertion:
(?<=call me|my name's|my name is|my names|I am|I'm).*
请参阅 this demo 。
这个正则表达式不会在Javascript上工作(请参阅@ Barmar的Javascript使用答案)