4

javascriptでこの正規表現を使用する際に問題があります。

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

私が試しているのは、2つの文字列の間、この場合は「Received:」と「;」の間のeverythigを一致させることです。

これが私のコードです:

var someString = "BlaBlaBla Received: blablabla; BlaBlaBla"

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

しかし、2行目では、firebugでエラーが発生しています。

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

ご助力ありがとうございます。

4

2 に答える 2

4

JavaScriptはルックビハインドアサーションをサポートしていません:(?<= Received: )は有効な構成ではありません。それがエラーの原因のようです。

ルックビハインドをマッチに統合する必要があります。

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 に答える