我在 javascript 中使用这个正则表达式时遇到问题:

(?<= Received: )(.*?)(?=; )

我想要的是匹配两个字符串之间的所有内容,在这种情况下是“Received:”和“;”。

这是我的代码:
var someString = "BlaBlaBla Received: blablabla; BlaBlaBla"

var receivedString = someString.match(/(?<= Received: )(.*?)(?=; )/);

但是对于第二行,我在 firebug 中遇到错误:
Error: invalid quantifier
Source Code:
  var receivedDateString = dates.match(/(?<= Received: )(.*?)(?=; ));

非常感谢您的帮助。

最佳答案

JavaScript 不支持后视断言:(?<= Received: ) 不是有效的构造。这似乎是您错误的根源。

您需要将后视整合到您的比赛中:

someString.match(/ Received: ([^;]*)/);

使用 [^;]* ,您甚至不再需要前瞻。

如果你需要直接访问第一个捕获组的内容,你可以试试这个:
var receivedDateString = / Received: ([^;]*)/.exec(someString)[1]

请注意,这假定将存在匹配项(如果在字符串中未找到 Received:,则索引操作将失败)。

关于Javascript match() 和无效量词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11683164/

10-10 11:01