0

正規表現を使用して問題を解決するのを手伝ってほしい。

私は次のJavaScriptコードを書きました:

var s = '/Date(1341118800000)/';
var regex = new RegExp('^/Date\(\d+\)/$');
if ( typeof s === 'string' && s.match(regex) )
    s = 'abc';
alert (s);

次の正確な文字で始まる文字列と一致させたい正規表現を作成し/Date(ました。1つ以上の数字が続き、その後に正確な文字が続き)/ます。

上記のJavaScriptコードでは、文字列'abc'をに割り当てる必要がありますsが、このコードの最後では、の値sは'/ Date(1341118800000)/'です。

どうすればこれを修正できますか?

4

3 に答える 3

1

エスケープスラッシュは、文字列によってすでに消費されています"\(" === "("。結果のエスケープされていない文字列はに渡され、特殊文字としてnew RegExp解釈されます。(

正規表現リテラルを使用し、/sもエスケープする必要があります。

var regex = /^\/Date\(\d+\)\/$/;

文字列が一致するかどうかをテストするには、次を使用できます。

regex.test(s);
于 2012-07-27T18:50:24.623 に答える
0

私はあなたがこのコードを探していると信じています:

var s = '/Date(1341118800000)/';
s = s.match(/^\/Date\((\d+)\)\/$/)[1];
alert(s);

ここでテストしてください

于 2012-07-27T19:02:59.317 に答える
0

問題は、javascriptでに"/^/Date\(\d+\)/$/"変換されることです。"/^/Date(d+)/$/"

"/^/Date\(\d+\)/$/" == "/^/Date(d+)/$/" // returns true

\したがって、問題を解決するには、バックスペースをエスケープするだけです。

var regex = new RegExp('^/Date\\(\\d+\\)/$');

于 2012-07-27T18:51:47.693 に答える