0

別のjavascript変数を追加できるように、正規表現を引用符で囲む必要がありますが、これにより正規表現が機能しなくなります。

これが実際の例です...

var re = new RegExp(/^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/);

そして、私が最終的に達成したいことは、次のようになります(ただし、機能するように修正されています)。

var re = new RegExp('^'+element.defaultValue+'|(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$');

これにより、DD / MM/YYYY形式の日付または入力フィールドのデフォルト値が許可されます。

4

2 に答える 2

6

文字列リテラル内では、すべての円記号をエスケープする必要があります。たとえば、Javascriptパーサーはバックスラッシュを文字列エスケープシーケンスの開始として受け取るため、'\d'実際には単なる文字列です。'd'コンストラクターは文字列に実際のRegExp()バックスラッシュを必要とするため、それらをエスケープする必要があります。

 `'|(0?[1-9]|[12][0-9]|3[01])[\\/\\-](0?[1-9]|1[012])[\\/\\-]\\d{4}$'`

文字列に入れようとしているデフォルト値に特殊文字が含まれている場合は、それらもエスケープする必要があります。でそれらをエスケープするか、この質問element.defaultValueからの回答を使用してください。

于 2012-08-15T11:04:52.583 に答える
0

スラッシュをエスケープする必要はありません、バックスラッシュをエスケープする必要があります。

new RegExp('^'+element.defaultValue+'|(0?[1-9]|[12][0-9]|3[01])[/\\-](0?[1-9]|1[012])[/\\-]\\d{4}$');

于 2012-08-15T11:07:27.723 に答える