我有两个字符串变体,如:
学生伴侣 *作者: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
| 匹配任一部分,因此,它不应该在第一个时停止;找到了?
此致 奸污
答案 0 :(得分:1)
您可以使用:
var regex = /Author:\s([^;*]+)/;
或者如果那些*
不在字符串中:
var regex = /Author:\s((?:(?!MIL)[^;])+)/;
或
var regex = /Author:\s([^;])+?)(?=;|MIL)/;
答案 1 :(得分:0)
通过将正则表达式修改为:
解决了我的问题(Author:)(([^;])+)(;|MIL)
这个正则表达式说:应该以“作者:”开头。并应结束;或者MIL。
谢谢