В части моего приложения, написанного на PHP, мне нужно проверить, содержит ли поле хотя бы одну букву в проверка на стороне клиента, для этого я пишу следующий Код JavaScript:
var name_allow_char = /^[a-zA-Z\-\'\s]+$/;
var name_allow_letter = /[A-Za-z]+$/;
if ( $.trim( $('#title').val() ).match( name_allow_char ) && !$.trim( $('#title').val() ).match( name_allow_letter ) ) {
//show error
} else {
//ok
}
Но это не работает. Я имею в виду, что когда я тестирую с помощью 12, он показывает действительный, но он должен быть недействительным, поскольку нет буквы ...
Может ли кто-нибудь сказать мне, что не так в моем коде.
@ WiktorStribiżew: Я могу написать неправильное условие. Я не могу понять, что не так с моим состоянием,
Что именно вы пытаетесь сделать? Мне ваша логика не имеет смысла.
У меня такая же мысль с @ WiktorStribiżew. поэтому текущая логика такова: ЕСЛИ (имя имеет символ) и (имя не содержит буквы), то показать ошибку. это мне не кажется правильным.
Сомневаюсь, что мы можем помочь, вопрос слишком непонятный. Вы используете две модели с учетом некоторых условий, которые вы не объяснили. После того, как вы объясните, что именно вы хотите сопоставить, а что нет, обновите вопрос и дайте знать.
Я сделал здесь пример regex101.com/r/rfliFL/2
@ WiktorStribiżew: Забудьте о том, что я написал как условие, я мог написать неправильное условие, поэтому я хочу следующее: Предположим, у меня есть поле ввода с идентификатором: заглавие, и оно может принимать все символы клавиатуры в качестве ввода, теперь я хочу написать регулярное выражение который будет искать, если длина поля ввода заголовка больше 0, чем должна быть хотя бы одна буква (az или AZ). Пример: 1. L -> действительный 2. k -> действительный 3. 123423 @ # $ -> недопустимый 4. 123% ^% k -> действительный 5. 436AB54 -> действительный 6. 3435 ^% & ^ ksdka -> действует
Используйте if (/^(?:[^A-Za-z]*[A-Za-z].*)?$/.test($.trim($("#title").val())) { // ok } else { // error }



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуй это:
if ($.trim($("#title").val()).match(/([a-zA-Z])+([ -~])*/) {
// ok
} else {
// error
}
Регулярное выражение должно соответствовать 1 или более буквам, за которыми следует 0 или более символов ASCII (от пробела до тильды).
Заголовок может содержать печатный символ муравья. Я имею в виду: a-z, A-Z, 0-9, -,: и так далее ..
Изменили регулярное выражение, это то, что вам нужно?
Если все, что вы хотите проверить, это то, что оно содержит хотя бы одну букву, вы можете просто использовать это регулярное выражение: / \ w /, если оно возвращает значение, значит, есть буква.
Но / \ w / также, похоже, соответствует только числам (буквенно-цифровое + undescroce), а OP этого не хочет. Должно быть мин. 1 буква.
@Mathias: Большое спасибо. Это то, что я хочу, брат ... :)
Нет проблем, рад помочь :)
Вы уверены, что не поменяли местами условия? Вы показываете ошибку, если текст соответствует строке, состоящей из букв,
-,', пробелов и не оканчивающейся буквой.12не подходит, поэтому этоTrue.