ЙажаСценарий / Говнокод #18741 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
/^.{0}$/.test('')   // true
/^.{0,}$/.test('')  // true
/^.{0,1}$/.test('') // true
/^.{,1}$/.test('')  // false

http://www.ecma-international.org/ecma-262/5.1/#sec-15.10

/^.{,1}$/.test('.{,1}') // true

Запостил: 1024-- 1024--, (Updated )

Комментарии (24) RSS

    • {n} - Ровно n раз
      {m,n} - От m до n включительно
      {m,} Не менее m
      {,n} Не более n

      тебе еще и регулярки разжевывать надо?
      Ответить
        • >От 0 до n? И что я не так сказал, рванина?
          идиота кусок, {0,1} по хорошему хоть и работает как {,1}, но не эквивалентно, потому, что проверяется только максимум.
          Ответить
          • > {0,1} по хорошему хоть и работает как {,1}, но не эквивалентно, потому, что проверяется только максимум.
            > работает как {,1}, но не эквивалентно
            Какое-то запутанное утверждение. Можно пояснительный пример с регулярками и указанием языка/реализации?
            Ответить
            • >Какое-то запутанное утверждение. Можно пояснительный пример с регулярками и указанием языка/реализации?
              хотел найти что-то в спецификациях, и не нашел {,n}.
              в posix есть все кроме него.
              а вот тут PCRE - Perl-compatible regular expressions (original API)
              http://www.pcre.org/pcre.txt
              сказано следующее:
              An opening curly bracket that appears in a
              position where a quantifier is not allowed, or one that does not match
              the syntax of a quantifier, is taken as a literal character. For exam-
              ple, {,6} is not a quantifier, but a literal string of four characters.
              опа-опа-опа-па, оказывается в JavaScript все правильно.
              есть еще http://pubs.opengroup.org/onlinepubs/009696899/basedefs/xbd_chap09.html

              When an ERE matching a single character or an ERE enclosed in parentheses is followed by an interval expression of the format "{m}", "{m,}", or "{m,n}", together with that interval expression it shall match what repeated consecutive occurrences of the ERE would match. The values of m and n are decimal integers in the range 0 <= m<= n<= {RE_DUP_MAX}, where m specifies the exact or minimum number of occurrences and n specifies the maximum number of occurrences. The expression "{m}" matches exactly m occurrences of the preceding ERE, "{m,}" matches at least m occurrences, and "{m,n}" matches any number of occurrences between m and n, inclusive.

              For example, in the string "abababccccccd" the ERE "c{3}" is matched by characters seven to nine and the ERE "(ab){2,}" is matched by characters one to six.

              ну ладно, слив засчитан.
              Ответить
              • > pcre
                > {,6}
                Надеюсь какой-нибудь use warnings в перле намекнет про глупую ошибку
                Ответить
                • эмм... perl тут скорее как название.Perl Compatible Regular Expressions
                  это по сути стандарт описывающий синтаксис, который поддерживает больше конструкций чем POSIX. его по сути как модуль используют в том же самом php, или других языка.
                  так, что тут вопрос не к перлу, а к парсеру.
                  Ответить
    • В питоне значит 0. В экмаскрипте конструкция {,n} не существует и понимается буквально (строка "{,n}").
      Ответить
      • Ну охуеть, т.е. оно при ошибках синтаксиса еще и молча буквально воспринимает строку?
        Ответить
          • {} - метапоследовательность. Воспринимать то что внутри как литерал - это как игнорировать недействительные эскейп-последовательности (причем бы тут питон?)
            Ответить
            • читай внимательно
              An opening curly bracket that appears in a position where a quantifier is not allowed, or one that does not match the syntax of a quantifier, is taken as a literal character. For example, {,6} is not a quantifier, but a literal string of four characters.
              взято отсюда http://www.pcre.org/pcre.txt
              казалось бы, при чем тут твой дружок? при чем тут Кук?
              Ответить
              • >Воспринимать то что внутри как литерал - это как игнорировать недействительные эскейп-последовательности
                И? Я говорю, что это - говно. На недействительные последовательности лучше материться явно.

                Какой мой дружок? Что несешь?
                Ответить
                • > На недействительные последовательности лучше материться явно.
                  Хоть я и сторонник свободы, undefined, слабого питуха, но плюсанул. В регулярках и так нечитаемости хватает, чтобы позволять такие вореции.
                  Ответить
                  • >Хоть я и сторонник свободы, undefined, слабого питуха
                    "сторонник слабого питуха" это звучит!

                    >вывод питушни
                    >утиная питузация
                    >питухбезопасность
                    >зависимые питухи
                    >базовые питухи должны иметь возможность использовать подпитушню, не зная об этом.
                    Ответить
                • >И? Я говорю, что это - говно. На недействительные последовательности лучше материться явно.
                  письку гни. ты матчасть читал? там написано, что некорректно составленная последовательность будет считаться строкой.
                  в javascript вообще
                  var x = null;
                  var y = false;
                  
                  x == y → true
                  x === y → false
                  без ошибок отработает. но на секундочку так, сравнивается null и false, и еще выдает true. казалось бы почему? но это так работает.
                  Ответить
                  • Я читал твою цитату стандарта, я говорю, что он - говно, ферштейст?

                    >в javascript вообще
                    О, ты признал что js тоже говно?
                    Ответить
                  • Если следовать вашей логике и принять, что "некорректно составленные последовательности" приводятся к строке, то в вашем примере и первое сравнение должно быть false.
                    "null" != "false"
                    Первый раз вы сравнивали нестрого, поэтому имело место численное приведение типов. Оба значения преобразовались в 0.
                    Во втором случае проверялись типы данных, а null и false имеют разные типы.
                    Это не сложно запомнить.
                    Ответить
            • >(причем бы тут питон?)
              Притом, что 3_14dar пойдёт напитон, пидар.
              Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8