Я пытаюсь добиться проверки для числового ввода плюс буквы X или x. Пока что у меня есть:
if(preg_match('/[^0-9xX]+$/', $data)) return 'error';
Он правильно возвращает ошибку для всех случаев, за исключением a123. Кто-нибудь знает почему?
использование ^
в начале регулярного выражения, чтобы проверить, если полная строка вместо подстроки.
if(preg_match('/^[0-9xX]+$/', $data))
return 'error';
Попробуй это:
if(preg_match('/^[0-9x]+$/i', $data)){
echo 'match';
}else{
echo 'no match';
}
Это как у тебя, только наоборот. ^ для начала строки. $ Для конца строки. Таким образом, вся строка должна соответствовать шаблону.
if(!preg_match('/^([0-9]+|[xX])$/', $data)) return 'error';
Может быть, это будет лучше,
это соответствует правильному случаю, и добавить !
до результата матча.
Я не понял
if(preg_match('/^[0-9xX]+$/', $data)) return 'error';
все еще не возвращает ошибку, когда мы вводим 123.
Извините, если я сделаю недоразумение.
if(preg_match('/[0-9]xX$/', $data)) return 'error';
За всем номером последует хх. CMIIW.