2012-05-24 4 views
0

У меня есть запрос на базу данных на основе ввода пользователем. Однако, если пользователь вводит какую-либо одну общую букву в поиске, приложение будет аварийно завершено. но поскольку поиск также поддерживает китайские символы, я не могу просто заблокировать все поиски одного символа.Регулярные выражения и китайский

Как написать регулярное выражение для проверки одного английского символа, но не будет содержать ни одного китайского символа? "^ (a-zA-Z) {1} $" "^ \ w {1} $" включают в себя только английские буквы?

Я имею в виду, используя регулярные выражения, как это, но любые более эффективные решения будут оценены:

if(input.matches("^(a-zA-Z){1}$") 
{ 
    //Show error 
} 
else 
{ 
//do query 
} 
+3

uhmmm Могу ли я предложить не взламывать работу. исправить проблему с «моим приложением»? –

+0

@jb «но любые лучшие решения были бы оценены» – Chimeara

+0

Да, я должен изменить запрос базы данных на ограничение «LIMIT 50», которое исправит проблему сбоя, но я хотел бы также использовать регулярное выражение, чтобы я мог показать сообщение пользователю вместо него, предполагая, что данные не существуют. – Chimeara

ответ

1

Вы определенно должны исправить любые сбои в первую очередь. Чтобы различать символы на английском и китайском языках (CJK), вы можете использовать классы символов, такие как \p{ASCII}, \p{Alpha} для ASCII и \p{InCJKUnifiedIdeographs} для символов CJK.

Смежные вопросы