Javascript match()和无效的量词

时间:2012-07-27 07:21:25

标签: javascript regex match

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

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

我想要的是匹配两个字符串之间的每个字符串,在这种情况下,在“已接收:”和“;”之间。

这是我的代码:

var someString = "BlaBlaBla Received: blablabla; BlaBlaBla"

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

但是对于第二行,我在firebug中遇到错误:

Error: invalid quantifier
Source Code:
  var receivedDateString = dates.match(/(?<= Received: )(.*?)(?=; )); 

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:4)

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

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

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

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

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

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

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

答案 1 :(得分:1)