4

我在 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: )(.*?)(?=; )); 

非常感谢您的帮助。

4

2 回答 2

4

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

您需要将lookbehind集成到您的匹配中:

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

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

如果你需要直接访问第一个捕获组的内容,你可以试试这个:

var receivedDateString = / Received: ([^;]*)/.exec(someString)[1]

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

于 2012-07-27T07:36:18.607 回答
1

?<=javascript 不支持类似的构造。看看https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions

于 2012-07-27T07:39:41.997 回答