Продолжение номеров в SSN Validation [дубликат]

Он возвращает, может ли оператор оценивать значение false. например:

 ! false // true! true // false! isValid () // недействительно  

Вы можете использовать его дважды, чтобы принудить value to boolean:

  !! 1 // true !! 0 // false  

Итак, чтобы более точно ответить на ваш вопрос:

  var myVar =! function () {return false;  } ();  // myVar содержит true  

Edit: имеет побочный эффект изменения объявления функции на выражение функции. Например. следующий код недействителен, поскольку он интерпретируется как объявление функции, в котором отсутствует требуемый идентификатор (или имя функции ):

   function () {return false;  } ();  // синтаксическая ошибка  
31
задан Zyerah 12 April 2013 в 01:25
поделиться

7 ответов

UPDATE

25 июня 2011 года SSA изменил процесс назначения SSN на «рандомизацию SSN». [27] Рандомизация SSN влияет на процесс назначения SSN следующими способами:

Он устраняет географическое значение первых трех цифр SSN, ранее называемого Area Number, больше не выделяя номера областей для назначения для отдельных лиц в конкретных государствах. Это исключает значимость наивысшего номера группы, и, как результат, список высоких групп заморожен во времени и может использоваться для проверки SSN, выпущенных до даты реализации рандомизации. Ранее назначенные номера номеров были введены для присвоения, за исключением номеров номеров 000, 666 и 900-999.

Новые правила

  • Номер социального страхования - это девятизначное число в формат «AAA-GG-SSSS». Число делится на три части.
  • Средние две цифры - это номер группы. Номера групп варьируются от 01 до 99.
  • Последние четыре цифры представляют собой серийные номера. Они представляют собой прямую цифровую последовательность цифр от 0001 до 9999 внутри группы.
  • Некоторые специальные числа никогда не выделяются: номера со всеми нулями в любой группе цифр (000 - ## - ####, # ## - 00 - ####, ### - ## - 0000). Номера с номером 666 или 900-999 (индивидуальный идентификационный номер налогоплательщика) в первой группе цифр.
  • SSNs , используемые в рекламе , сделали эти числа недействительными.

http://en.wikipedia.org/wiki/ Social_Security_number # Structure

Предыдущий ответ

Вот самое подробное описание в состава SSN, который я нашел.

20
ответ дан Eric J. 15 August 2018 в 23:47
поделиться

Как и в случае рандомизации номеров социального обеспечения после 911, записи в серии 900 и даже 666 теперь являются потенциально допустимыми числами.

Единственные определенные моменты на данный момент времени: первая группа из 3 никогда не будет 000, пара средних групп никогда не будет 00, а последние четыре никогда не будут 0000

. Вы можете выполнить некоторое тестирование с помощью первого тестирования, чтобы убедиться, что числовое значение записи > = 1010001 [и & lt; 1000000000] (ssan из 001-01-0001 представляется наименее законным). Затем вы можете продолжить проверку на 00 в позициях 4 и 5 и 0000 в последних четырех.

1
ответ дан AbcAeffchen 15 August 2018 в 23:47
поделиться
  • 1
    Просьба предоставить официальную ссылку для первого предложения и следующие допущения / правила. Это противоречит другим (предыдущим ответам) и правительственной документации : «Раньше не назначенные номера областей были введены для присвоения за исключением номеров номеров 000, 666 и 900-999. – user2864740 26 January 2015 в 22:39

Я знаю, что это старый вопрос, но ради других, которые ищут ответы, я подумал, что добавлю быструю функцию javascript для проверки того, что данный SSN действителен.

function checkSSN() {
    var inputSSN = #YourInput#,
        ssnRegex = new RegExp("^(9[0-9][0-9]|666|000|078051120|219099999|123456789|123121234|321214321)|^([0-8][0-9][0-9]00)|^([0-8][0-9][0-9][0-9][0-9]000)$"),
        repeats = /^(.)\1+$/;

    //make sure we have 2 dashes in the input Social Security number
    if( inputSSN.match(/./g).length === 2) {
        //Once we have confirmed that there are the right number of dashes, remove them, and make sure that the resulting string is a number (you may or may not need this logic depending on the format of your input SSN.
        inputSSN = inputSSN.replace(/-/g, "");

        if(!isNaN(inputSSN)) {
            //Test the input SSN against our regex to ensure that it doesn't contain any disqualifying combinations.
            if(!ssnRegex.test(inputSSN)) {
                //Make sure the input SSN isn't just a repeated number
                if(!repeats.test(inputSSN)) {
                    //If it lands inside of this, we know it's a valid option for a social security number.
                }
        }   
    }
}

Для логики ssnRegex:

Первый раздел обрабатывается, если SSN начинается с номера 900-999, 666, 000 или одного из известных дисквалифицирующих SSN, упомянутых выше.

^ ( 9 [0-9] [0-9] | 2 | 6 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

^ ([0-8] [0-9] [0-9] 00)

Третий раздел гарантирует, что последняя часть не 0000

^ ( [0-8] [0-9] [0-9] [0-9] [0-9] 0000)

Кроме того, мы проверяем, чтобы они ввели число, и что они 'просто используя повторяющееся число.

1
ответ дан GuyThreepwood64 15 August 2018 в 23:47
поделиться

Вот моя версия PHP

/**
 * Validate SSN - must be in format AAA-GG-SSSS or AAAGGSSSS
 *
 * @param $ssn
 * @return bool
 */
function validate_ssn($ssn) {

    $ssnTrimmed = trim($ssn);

    // Must be in format AAA-GG-SSSS or AAAGGSSSS
    if ( ! preg_match("/^([0-9]{9}|[0-9]{3}-[0-9]{2}-[0-9]{4})$/", $ssnTrimmed)) {
        return false;
    }

    // Split groups into an array
    $ssnFormatted = (strlen($ssnTrimmed) == 9) ? preg_replace("/^([0-9]{3})([0-9]{2})([0-9]{4})$/", "$1-$2-$3", $ssnTrimmed) : $ssnTrimmed;
    $ssn_array = explode('-', $ssnFormatted);

    // number groups must follow these rules:
    // * no single group can have all 0's
    // * first group cannot be 666, 900-999
    // * second group must be 01-99
    // * third group must be 0001-9999

    foreach ($ssn_array as $group) {
        if ($group == 0) {
            return false;
        }
    }

    if ($ssn_array[0] == 666 || $ssn_array[0] > 899) {
        return false;
    }

    return true;
}
0
ответ дан Jesse Szypulski 15 August 2018 в 23:47
поделиться

Это, очевидно, старый пост, но я нашел несколько способов сократить его. Также есть несколько конкретных чисел, чтобы сделать недействительными по этой ссылке: http://www.snopes.com/business/taxes/woolworth.asp

Вот как я это сделал , Я мог бы использовать регулярные выражения для повторения чисел, но с конкретными для недействительности мы могли бы также добавить их через fives в этот список (более 5 будет недействительным в любом случае из-за проверки номера области). Я также оставил isNumeric (ssn), потому что поле является числовым и уже разделяет символы перед вызовом функции проверки.

function validateSSN(ssn) {
    // validate format (no all zeroes, length 9
    if (!ssn.match(/^[1-9][0-9]{2}[1-9][0-9]{1}[1-9][0-9]{3}/)
            || ssn.length!=9) return false;

    // validate area number (1st 3 digits)
    var area=parseInt(ssn.substring(0, 3));
    //  standard      railroad numbers (pre-1963)
    if (area>649 && !(area>=700 && area<=728)) return false;

    // disallow specific invalid number
    if (ssn=='078051120' || // fun fact: some idiot boss put his
                            // secretary's ssn in wallets he sold,
                            // now this is 40000 people's ssn
        ssn=='219099999' || // was used in an ad by the Social Security
                            // Administration
        ssn=='123456789' || // although valid it's not yet assigned and
                            // you're not likely to meet the person who
                            // will get it
        ssn=='123121234' || // probably is assigned to someone but more
                            // likely to find someone trying to fake a
                            // number (next is same)
        ssn=='321214321' || // all the rest are likely potentially
                            // valid, but most likely these numbers are
                            // abused
        ssn=='111111111' ||
        ssn=='222222222' ||
        ssn=='333333333' ||
        ssn=='444444444' ||
        ssn=='555555555') return false;

    return true;
}
12
ответ дан MaKR 15 August 2018 в 23:47
поделиться

По состоянию на 2011 год SSN полностью рандомизированы ( http://www.socialsecurity.gov/employer/randomization.html )

Остались только реальные правила:

  • Не может начинаться с 900-999 (хотя идентификационный номер индивидуального налогоплательщика, который может использоваться как SSN временными резидентами и иммигрантами без документов / DACA / DAPA в некоторых ситуациях, находится в одном формате и делает начните с 9)
  • Невозможно начать с 666
  • Невозможно начать с 000
  • Должно быть 9 числовых цифр или 11 с двумя штрихами
  • Не может быть ни одной из известных подделок; "078051120" & mdash; Woolworth Wallet Fiasco «219099999» & mdash; Использовалось в объявлении Администрацией социального обеспечения
  • Многие люди исключают повторение последовательных чисел, хотя они теперь технически обоснованы, и мне жаль, что бедные люди, которые получили их.
15
ответ дан user833771 15 August 2018 в 23:47
поделиться
11
ответ дан Zed 15 August 2018 в 23:47
поделиться
  • 1
    Да. По сути, вы не можете действительно утвердить номер социального страхования в США. Например, нет контрольной цифры. О лучшем, что вы можете сделать, это бросить вещи, которые явно недействительны. Также имейте в виду, что возможный домен американского номера социального обеспечения составляет 1 миллиард дискретных значений (0-999999999). Учитывая, что в фактическом домене есть пробелы из-за схемы распределения и что в США проживает более 300 миллионов человек, большинство из которых имеют номера социального обеспечения, принимается почти третья часть возможного домена. Не будет долго, пока мы не увидим столкновения. Это будет весело. – Nicholas Carey 2 May 2013 в 18:34
  • 2
    Этот ответ теперь относится к устаревшей информации. – user2864740 26 January 2015 в 22:44
Другие вопросы по тегам:

Похожие вопросы: