Javascript match()和无效的量词



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

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

我正在尝试的是匹配两个字符串之间的所有内容,在这种情况下是在"Received:"one_answers";"之间。

这是我的代码:

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不支持像?<=这样的构造。看看https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions.

最新更新