0

私のコードは次のようになります

var html = $(el).html().toString();
html = '2012-05-10';
var re = new RegExp('^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$');
var m = re.exec(html);
if (m != null)
alert('match');
else
alert('nomatch');

正規表現の目的は、文字列に日付が含まれているかどうかを確認することです。ただし、日付は見つかりません。オンラインの正規表現ツールで正規表現をテストしました。

4

2 に答える 2

1

を見つけようとしている場合はwhether a string contains any dates^最初に とを使用しても役に立ちません。文字列の$最初と最後に一致することを示しているためです。

他のテキスト (または空白) を含む文字列内で日付を見つけるには、これを使用します...

var re = new RegExp('(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])');

アップデート

アントンはすでに解決策を考え出しています - ただし、上記の解決策は元の解決策よりも優れていますが、引用符内に含まれている場合に機能させるために\dエスケープする必要があるため、まだ正しくありません。\\d代わりに...

var re = new RegExp('(19|20)\\d\\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])');

ただし、後から考えると、動的パターンではないため、最善の解決策は/pattern/構文を使用することであるという他のすべての意見に同意します

于 2012-06-30T11:21:05.150 に答える
0

@Utkanosが言ったように、 /pattern/-syntax を代わりにこのように使用しました

if (/(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])/.test(html))

それからそれは働いた:)

于 2012-06-30T11:33:01.643 に答える