1

ここで問題が見つからず、何を試しても結果がわかりません

私はこれをスクリプトに持っています:

var pattern = "(\d*(?=,))";
var regex = new RegExp( pattern, "i" );
var string_to_match = "[\w\s-]{3,}";
var match = regex.exec( string_to_match );
alert( match.length ); --> prints 2
alert( typeof( match )); --> prints object

alert( match[0] ); --> prints nothing, or empty space
alert( match[0].length ); --> prints 0
alert( typeof( match[0] )); --> prints string

alert( match[1] ); --> prints nothing, or empty space
alert( match[1].length ); --> prints 0
alert( typeof( match[1] )); --> prints string

これは、私が行っているテストの最後のバージョンです。実際の/最終的なスクリプトでは、一致する文字列は HTML コードから取得されます。常に同じ形式で、数字を変更するだけです。

私が試したすべての正規表現テスターで、結果は予想どおりで、一致する番号が表示されます[0]

それで、私は何を間違っていますか?ここで何が欠けていますか?

回答後に更新します。

以下の組み合わせで、期待どおりに動作します

var regex = /(\d*(?=,))/i;

以下の組み合わせで、期待どおりに動作します

var pattern = "(\\d*(?=,))";
var regex = new RegExp( pattern, "i" );

以下の組み合わせでは動作しません

var pattern = "/(\d*(?=,))/";
var regex = new RegExp( pattern, "i" );

そのため、区切り記号としてスラッシュを追加するだけでは機能しません。PHPの正規表現に慣れているので、最初の試みでそれを試しました。\d でスラッシュをエスケープするとうまくいきました。そのパターンは解釈されずに正規表現オブジェクトに文字通り渡されていましたが、それが私の問題でした。

4

1 に答える 1