正则表达式:捕获所有内容,直到特定单词

时间:2013-04-02 09:38:23

标签: javascript regex regex-lookarounds

我有两个字符串变体,如:

  

学生伴侣 *作者:Alcock,Pete; May,Margaret; Wright,Sharon * MIL EAN / ISBN:9781283333115

     

Java编程:Java专家* 作者:Sarang,Poornachandra * MIL EAN / ISBN:9781280117268

现在,我想抓住第一个作者:Alcock,Pete aand Saran,Pooranachandra。

现在在Javascript中,我正在尝试:

var regex = new RegExp("(Author:)\\s(.+)(?=;|MIL)");
var regexVal = value.match(regex);
console.log(regexVal);

OR

var regex = new RegExp("(Author:)\\s(.+)(?=MIL)");
var regexVal = value.match(regex);
console.log(regexVal);

如果有一个作者,第二个正则表达式完全正常,但是,如果是多个作者,我想选择值,直到第一个; 而不是 MIL

| 匹配任一部分,因此,它不应该在第一个时停止;找到了?

此致 奸污

2 个答案:

答案 0 :(得分:1)

您可以使用:

var regex = /Author:\s([^;*]+)/;

或者如果那些*不在字符串中:

var regex = /Author:\s((?:(?!MIL)[^;])+)/;

var regex = /Author:\s([^;])+?)(?=;|MIL)/;

答案 1 :(得分:0)

通过将正则表达式修改为:

解决了我的问题
(Author:)(([^;])+)(;|MIL)

这个正则表达式说:应该以“作者:”开头。并应结束;或者MIL。

谢谢

相关问题