Проверка должна выполняться на стороне пользователя. При смене фокуса с поля ввода данных должна выполняться проверка введённых данных и появляться предупреждение о некорректности рядом с полем. При неправильно введённом логине ничего не происходит, и данные спокойно отправляются в базу данных. Регулярные выражения написаны корректно.
registration.php
<div name="blockForm" class="form" id="reg">
<form name="regForm" action="registrationCheck.php" method="post">
<input type="text" name="login" class="reg_form" id="login" onblur="responseLog();" placeholder="Логин" required /><br />
<span id="errorLog" style="display: none">Логин введён некорректно! Логин должен начинаться со строчной или прописной буквы, он может содержать цифры или символы (._-\)</span>
<input type="submit" name="save" class="reg_form" id="save_reg" onclick="resetRegForm()" value="Сохранить" />
</form>
</div>
registration.js
$(document).ready(function () {
function responseLog() {
$.ajax({
type: "POST",
url: "checkReg.php",
data: { action: 'login', user: $("#login").val() },
cache: false,
success: function (response) {
if (response == 'true') {
$("#errorLog").css("display", "block");
$("#errorLog").css("color", "red");
} else {
$("#login").css("background", "green");
};
}
});
};
function resetRegForm() {
$("#errorLog").css("display", "none");
};
});
checkReg.php
<?php
$action = $_POST['action'];
$mysql = new mysqli ("localhost", "root", "", "yoursmilebase");
if ($action == "login") {
$row = $mysql->query("SELECT `login` FROM `users` WHERE `login` = '$action'");
if ($row) {
echo "true";
} else if (!preg_match("/^[a-zA-Z][a-zA-Z\d._-\\]{5,15}/", $action) || preg_match("/^(admin)/", $action)) {
echo "true";
} else {
echo "false";
};
}
$mysql->close;
?>