Моим регулярным выражением является следующее:
/^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/im
Допустимые форматы:
(123) 456-7890 (123)456-7890 123-456-7890 123.456.7890 1234567890 +31636363634 075-63546725
Время для таблицы истинности ... Последние два столбца - это выражения, которые вы сравниваете
A | B | C | A == B | (A == B) == C | A == B && B == C
--------+-------+-------+-----------+---------------+-----------------
TRUE | TRUE | TRUE | TRUE | TRUE | TRUE
TRUE | TRUE | FALSE | TRUE | FALSE | FALSE
TRUE | FALSE | TRUE | FALSE | FALSE | FALSE
TRUE | FALSE | FALSE | FALSE | TRUE | FALSE
FALSE | TRUE | TRUE | FALSE | FALSE | FALSE
FALSE | TRUE | FALSE | FALSE | TRUE | FALSE
FALSE | FALSE | TRUE | TRUE | TRUE | FALSE
FALSE | FALSE | FALSE | TRUE | FALSE | TRUE
Нет! Они не то же самое.
То, что вы действительно ищете, вероятно,
if (a === b === c)
по сравнению с
if ((a === b) && (b === c) && (a === c))
И они не равны. Первый может быть скомпонован как:
if ((a === b) === c)
Который, если a и b равны, оценивает
if (true === c)
. Это не то же самое, что проверка, если все три равны .
===
транзитивен, поэтому (a === b) && (b === c)
достаточно
– Cimbali
16 February 2015 в 15:39
Я попытаюсь объяснить разницу. Объясните первый пример кода:
if (a=b=c) {console.log('something')};
// Code above means: if (c) {console.log('something')};
// So if Boolean(c) is false, console.log will not work
Объясните второй пример:
if ( (a=b)&&(a=c)&&(b=c) ) {console.log('something')};
// Code above means: if (b && c && c) {console.log('something')};
// So if Boolean(c) or Boolean(b) is false, console.log will not work
Оператор присваивания присваивает значение своему левому операнду на основе значения его правого операнда и верните значение его правого операнда.