Linux - проверка Если пользователь ввел номера и буквы

Нет, вы можете делать только эти типы вставок:

INSERT INTO table (artist, album, track, length) 
VALUES 
("$artist", "$album", "$track1", "$length1"), 
("$artist", "$album", "$track2", "$length2"),
("$artist", "$album", "$track3", "$length3"), 
("$artist", "$album", "$track4", "$length4"),
("$artist", "$album", "$track5", "$length5");

Но вы всегда можете написать сценарий, который будет генерировать вышеуказанное, используя любые регулярные выражения, которые вы пожелаете.Затем сценарий будет отвечать за расширение регулярных выражений в соответствующий вышеупомянутый INSERT ... , а затем запускать его.

Оператор REGEXP

Вы можете попробовать сгенерировать шаблоны заранее или как часть содержимого команды VALUES , используя REGEXP .

Вы можете часто использовать его в предложении WHERE следующим образом:

SELECT col1, col2, ..., coln
FROM products
WHERE sku REGEXP '^[A-Za-z]{2,4}-[0-9]{3}-[0-9]{2}$'

Вы можете узнать больше об этом операторе на веб-сайте MySQL в документах REGEXP , но я ' я никогда не видел, чтобы это использовалось таким образом, и никогда не думал пробовать это сам. Я нашел команду, упомянутую в этом SO Q&A под названием: Адаптация регулярного выражения для работы с MySQL .

Ссылки

0
14.12.2018, 15:34
1 ответ

Некоторые проблемы с вашим кодом:

  1. Вам нужен пробел между [[иpassword
  2. passwordбудет переменной и поэтому для расширения
  3. ее нужно записать как $password.
  4. Вы используете хэш-баннер #!/bin/sh, поэтому расширенный тест bash([[)может быть недоступен
  5. Вы только проверяете, содержит ли пароль цифры

Я думаю, что функция лучше всего подходит для проверки того, соответствует ли пароль вашим требованиям, и придумала следующее:

#!/bin/sh

chk_pass () {
    local pass=$1
    # Check if password contains uppercase
    printf '%s' "$pass" | grep -q '[A-Z]' || return 1
    # Check if password contains lowercase
    printf '%s' "$pass" | grep -q '[a-z]' || return 1
    # Check if password contains numbers
    printf '%s' "$pass" | grep -q '[0-9]' || return 1
    # Check if password contains special characters
    printf '%s' "$pass" | grep -q '[^a-zA-Z0-9 \t]' || return 1
    return 0
}

printf '%s\n' 'Please enter a password containing at least one number, one uppercase letter, one lowercase letter, and one special character: '
read -rs 
if chk_pass "$REPLY"; then
    printf '%s\n' 'Success'
else
    printf '%s\n' 'Error: Password must contain one number, one uppercase letter, one lowercase letter, and one special character!' >&2
fi

Примечания:

Последнее grepв функции фактически только проверяет, содержит ли пароль символы , отличные от буквенно-цифровых или пробелов.
Опция -rдля чтения сохранит символы обратной косой черты
. Опция -sдля чтения скроет пользовательский ввод (, полезный для ввода пароля)

2
28.01.2020, 02:30

Теги

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