1

入力が4桁の長さで、2つの有効な年の間であることを確認するjavascriptの正規表現が必要です。

例: 1930 年から 2012 年の間は可能ですか?

4

3 に答える 3

3

http://utilitymill.com/utility/Regex_For_Rangeからの参照

First, break into equal length ranges:
  1930 - 2012

Second, break into ranges that yield simple regexes:
  1930 - 1999
  2000 - 2009
  2010 - 2012

Turn each range into a regex:
  19[3-9][0-9]
  200[0-9]
  201[0-2]

Collapse adjacent powers of 10:
  19[3-9][0-9]
  200[0-9]
  201[0-2]

Combining the regexes above yields:
  (19[3-9][0-9]|200[0-9]|201[0-2])

Next we'll try factoring out common prefixes using a tree:
Parse into tree based on regex prefixes:
  . 1 9 [3-9] [0-9]
    2 0 0 +----
      + 1 [0-2]

Turning the parse tree into a regex yields:
  (19[3-9][0-9]|20(0[0-9]|1[0-2]))

We choose the shorter one as our result.

\b(19[3-9][0-9]|200[0-9]|201[0-2])\b
于 2012-12-28T16:40:05.690 に答える
0
/^(19[3-9]\d|20(0\d|1[0-2]))$/
于 2012-12-28T15:47:59.833 に答える
0

次のようなことを試すことができます: \b(19[3-9][0-9]|200[0-9]|201[0-2])\b(ここから取得)。そうは言っても、数値を扱うときは数値演算子を使用する必要があります。正規表現でこれを行うと、非常に面倒なことが非常に速くなる可能性があります。

于 2012-12-28T09:56:00.047 に答える