1

私が使用している正規表現は、返されるテキストが多すぎます。この式は、テキストから名前と日付を取り除くことになっています。

var sCurrentText = "(26 JAN 2011) - ILewis Provided excellent translation.";
var sRegxDate    = "\([0-9]{2}[\\\.\/\-, ](Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[\\\.\/\-, ][0-9]{4}\)[, \-]{0,3}[A-z]+ ?\-?\:? ?";
var DatePattern  = new RegExp(sRegxDate, "i");
var sDate        = DatePattern.exec(sCurrentText);
alert(sDate);

私が期待する:

(26 JAN 2011) - ILewis

しかし、ポップアップには次のように書かれています。

(26 JAN 2011) - ILewis,JAN

その他の厄介な問題:

  1. regexpalでこの問題をエミュレートすることはできません。http://regexpal.com/

2.2。

alert(sDate[0]); 

戻り値:

(26 JAN 2011) - ILewis

しかし

oTextbox.value = sDate[0];

テキストボックスが空になります。イライラする。

私は何が間違っているのですか?

4

2 に答える 2

1

sDate実際には配列であるのに、文字列であると考えて警告しています。カンマは一致していません。区切り文字です。

最初の要素は次のとおりです。

(26 JAN 2011) - ILewis

2番目は:

JAN

これは、月のビットが括弧で囲まれているためです。これはキャプチャグループexecであり、結果の一部としてキャプチャグループを返します。

あなたが欲しい

sDate[0]

これから空のテキストボックスを取得している場合は、正規表現以外に他の問題があります。

\また、正規表現で不適切にエスケープされたものもあります。そこにあるので、IEではまったく機能しません。あなたが\\持っているところならどこでも必要です\

編集:このフィドルは、動作中のコードを示しています。できます。

http://jsfiddle.net/5azr9/

于 2012-10-04T21:11:07.247 に答える
0

たぶん、あなたはより単純な(より寛容な)正規表現で逃げることができます、それはすべてあなたのニーズに依存しますが、これを試してください:

/\(\d{2}.\w{3}.\d{4}\)[\s\-.,]{0,3}\b\w+\b/
于 2012-10-04T21:08:41.257 に答える