Проверьте: Только буквы, числа и -

Вы не можете получить доступ к флагу переполнения от C/C++.

Некоторые компиляторы позволяют Вам вставлять инструкции по прерыванию в код. На GCC опция является-ftrapv (но я должен признать, что никогда не использовал его. Проверит его после регистрации).

единственное портативное устройство и компилятор независимая вещь, которую можно сделать, состоит в том, чтобы проверить на переполнение самостоятельно. Точно так же, как Вы сделали в своем примере.

Редактирование:

Просто проверенный:-ftrapv, кажется, ничего не делает на x86 с помощью lastest GCC. Угадайте, что это - перенесенный от старой версии или характерный для некоторой другой архитектуры. Я ожидал, что компилятор вставит В код операции после каждого дополнения. К сожалению, это не делает этого.

11
задан Matthew Schinckel 17 July 2009 в 01:49
поделиться

4 ответа

Вам может потребоваться указать, что вся строка должна соответствовать:

validates_format_of :username, :with => /^[-a-z]+$/

Вам также может потребоваться заменить ^ на \ A и $ на \ Z, если вы не хотите сопоставлять новую строку в начале / конце. (спасибо BaroqueBobcat )

Добавление i приведет к совпадению без учета регистра. (спасибо Омару Куреши ).

(Я также изначально не использовал + : спасибо Чаку )

17
ответ дан 3 December 2019 в 02:41
поделиться

[] может содержать несколько «правил», поэтому [a-z0-9] дает строчные буквы и цифры

как специальный символ - должен стоять в начале правила

Дает ли

[-a-z0-9@_.] 

желаемый эффект?

3
ответ дан 3 December 2019 в 02:41
поделиться
validates_format_of :username, :with => /^[\w\-@]*$/

Обратите внимание на *, что означает «0 или более». '

1
ответ дан 3 December 2019 в 02:41
поделиться

Просто измените регулярное выражение, чтобы оно соответствовало всем символам, указанным в вашей спецификации ( \ w охватывает все буквенно-цифровые символы - буквы и цифры - и подчеркивание).

validates_format_of :username, :with => /[\w \.\-@]+/
0
ответ дан 3 December 2019 в 02:41
поделиться
Другие вопросы по тегам:

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