- 1
- 2
- 3
- 4
/^.{0}$/.test('') // true
/^.{0,}$/.test('') // true
/^.{0,1}$/.test('') // true
/^.{,1}$/.test('') // false
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+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
3_14dar 21.09.2015 10:14 # −1
Lokich 21.09.2015 17:24 # 0
{m,n} - От m до n включительно
{m,} Не менее m
{,n} Не более n
тебе еще и регулярки разжевывать надо?
3_14dar 21.09.2015 19:32 # −1
От 0 до n? И что я не так сказал, рванина?
Lokich 21.09.2015 20:44 # −1
идиота кусок, {0,1} по хорошему хоть и работает как {,1}, но не эквивалентно, потому, что проверяется только максимум.
1024-- 21.09.2015 20:55 # 0
> работает как {,1}, но не эквивалентно
Какое-то запутанное утверждение. Можно пояснительный пример с регулярками и указанием языка/реализации?
Lokich 21.09.2015 21:52 # −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.
ну ладно, слив засчитан.
Elvenfighter 22.09.2015 23:38 # 0
> {,6}
Надеюсь какой-нибудь use warnings в перле намекнет про глупую ошибку
Elvenfighter 22.09.2015 23:45 # 0
Lokich 23.09.2015 00:30 # 0
это по сути стандарт описывающий синтаксис, который поддерживает больше конструкций чем POSIX. его по сути как модуль используют в том же самом php, или других языка.
так, что тут вопрос не к перлу, а к парсеру.
3_14dar 21.09.2015 21:27 # −2
guest 22.09.2015 19:18 # 0
guest 18.04.2016 23:30 # 0
1024-- 21.09.2015 18:09 # +2
3_14dar 21.09.2015 19:33 # −2
Lokich 21.09.2015 21:57 # +1
3_14dar 22.09.2015 00:31 # −2
Lokich 22.09.2015 01:13 # 0
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
казалось бы, при чем тут твой дружок? при чем тут Кук?
3_14dar 22.09.2015 16:39 # 0
И? Я говорю, что это - говно. На недействительные последовательности лучше материться явно.
Какой мой дружок? Что несешь?
1024-- 22.09.2015 16:44 # +1
Хоть я и сторонник свободы, undefined, слабого питуха, но плюсанул. В регулярках и так нечитаемости хватает, чтобы позволять такие вореции.
3.14159265 18.04.2016 22:57 # +1
"сторонник слабого питуха" это звучит!
>вывод питушни
>утиная питузация
>питухбезопасность
>зависимые питухи
>базовые питухи должны иметь возможность использовать подпитушню, не зная об этом.
Lokich 22.09.2015 17:02 # 0
письку гни. ты матчасть читал? там написано, что некорректно составленная последовательность будет считаться строкой.
в javascript вообще без ошибок отработает. но на секундочку так, сравнивается null и false, и еще выдает true. казалось бы почему? но это так работает.
3_14dar 22.09.2015 18:15 # −3
>в javascript вообще
О, ты признал что js тоже говно?
Kayun 08.10.2015 21:43 # 0
"null" != "false"
Первый раз вы сравнивали нестрого, поэтому имело место численное приведение типов. Оба значения преобразовались в 0.
Во втором случае проверялись типы данных, а null и false имеют разные типы.
Это не сложно запомнить.
guest 22.09.2015 01:14 # +3
Притом, что 3_14dar пойдёт напитон, пидар.