4

正規表現は私の頭の中では単に悪であり、ドキュメントを何度読んでも、最も単純な表現でさえ理解できないようです!

JavaScript で変数をクエリするための非常に単純な式を記述しようとしていますが、正しく動作させることができません。

私は以下を検証しようとしています:-

文字列は 9 文字の長さで、SO- (So-、so-、sO-、SO- など、大文字と小文字は区別されません) で始まり、その後に 6 つの数字が続く必要があります。

したがって、以下はすべて一致するはずです

SO-123456、SO-123456、SO-456789、SO-789123

しかし、以下は失敗するはずです

SO-12d456、SO-1234567

などなど

ここまでしか出来なかった

var _reg = /(SO-)\d{6}/i;

var _tests = new Array();
_tests[0] = "So-123456";
_tests[1] = "SO-123456";
_tests[2] = "sO-456789";
_tests[3] = "so-789123";
_tests[4] = "QR-123456";
_tests[5] = "SO-1234567";
_tests[6] = "SO-45k789";

for(var i = 0; i < _tests.length; i++){
  var _matches = _tests[i].match(_reg);
  if(_matches && _matches.length > 0)
     $('#matches').append(i+'. '+_matches[0] + '<br/>');
}

上記の例については、 http://jsfiddle.net/TzHKd/を参照してください。

テスト番号 5 は一致していますが、6 ではなく 7 つの番号があるため失敗するはずです。

どんな援助でも大歓迎です。

乾杯

4

2 に答える 2

3

アンカー^$(それぞれ行頭と行末に一致する) を使用することで、正規表現を行全体に一致させることができます。それ以外の場合、正規表現の文字が一致するとすぐに true を返します。

したがって、次のように適用します。

var _reg = /^(so-)\d{6}$/i;
于 2013-09-02T11:21:44.443 に答える