Как проверить, содержит ли строка хотя бы одну букву, используя регулярное выражение JavaScript?

В части моего приложения, написанного на 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, он показывает действительный, но он должен быть недействительным, поскольку нет буквы ...

Может ли кто-нибудь сказать мне, что не так в моем коде.

  • Спасибо

Вы уверены, что не поменяли местами условия? Вы показываете ошибку, если текст соответствует строке, состоящей из букв, -, ', пробелов и не оканчивающейся буквой. 12 не подходит, поэтому это True.

Wiktor Stribiżew 18.10.2018 14:43

@ WiktorStribiżew: Я могу написать неправильное условие. Я не могу понять, что не так с моим состоянием,

Sondhi 18.10.2018 14:48

Что именно вы пытаетесь сделать? Мне ваша логика не имеет смысла.

epascarello 18.10.2018 14:56

У меня такая же мысль с @ WiktorStribiżew. поэтому текущая логика такова: ЕСЛИ (имя имеет символ) и (имя не содержит буквы), то показать ошибку. это мне не кажется правильным.

Atmahadli 18.10.2018 14:59

Сомневаюсь, что мы можем помочь, вопрос слишком непонятный. Вы используете две модели с учетом некоторых условий, которые вы не объяснили. После того, как вы объясните, что именно вы хотите сопоставить, а что нет, обновите вопрос и дайте знать.

Wiktor Stribiżew 18.10.2018 15:03

Я сделал здесь пример regex101.com/r/rfliFL/2

Atmahadli 18.10.2018 15:21

@ WiktorStribiżew: Забудьте о том, что я написал как условие, я мог написать неправильное условие, поэтому я хочу следующее: Предположим, у меня есть поле ввода с идентификатором: заглавие, и оно может принимать все символы клавиатуры в качестве ввода, теперь я хочу написать регулярное выражение который будет искать, если длина поля ввода заголовка больше 0, чем должна быть хотя бы одна буква (az или AZ). Пример: 1. L -> действительный 2. k -> действительный 3. 123423 @ # $ -> недопустимый 4. 123% ^% k -> действительный 5. 436AB54 -> действительный 6. 3435 ^% & ^ ksdka -> действует

Sondhi 19.10.2018 16:05

Используйте if (/^(?:[^A-Za-z]*[A-Za-z].*)?$/.test($.trim($("#title").val()‌​)) { // ok } else { // error }

Wiktor Stribiżew 19.10.2018 16:07
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
8
2 160
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуй это:

if ($.trim($("#title").val()).match(/([a-zA-Z])+([ -~])*/) {
    // ok    
} else {
    // error
}

Регулярное выражение должно соответствовать 1 или более буквам, за которыми следует 0 или более символов ASCII (от пробела до тильды).

Демо

Заголовок может содержать печатный символ муравья. Я имею в виду: a-z, A-Z, 0-9, -,: и так далее ..

Sondhi 18.10.2018 14:46

Изменили регулярное выражение, это то, что вам нужно?

Mathias 18.10.2018 15:04

Если все, что вы хотите проверить, это то, что оно содержит хотя бы одну букву, вы можете просто использовать это регулярное выражение: / \ w /, если оно возвращает значение, значит, есть буква.

Poul Bak 18.10.2018 16:04

Но / \ w / также, похоже, соответствует только числам (буквенно-цифровое + undescroce), а OP этого не хочет. Должно быть мин. 1 буква.

Mathias 18.10.2018 16:19

@Mathias: Большое спасибо. Это то, что я хочу, брат ... :)

Sondhi 19.10.2018 16:08

Нет проблем, рад помочь :)

Mathias 20.10.2018 21:02

Другие вопросы по теме