Java Regex для проверки полного имени разрешает только пробелы и письма
Я хочу, чтобы regex проверял только буквы и пробелы. В основном это должно подтвердить полное имя. Пример: Г-н Стив Коллинз или Стив Коллинз Я пробовал это регулярное выражение. "[A-Za-Z] + \.?" Но не работал. Может кто-нибудь мне помочь
постскриптум Я использую Java.
public static boolean validateLetters(String txt) {
String regx = "[a-zA-Z]+\\.?";
Pattern pattern = Pattern.compile(regx,Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(txt);
return matcher.find();
}
Ответы
Ответ 1
Как насчет:
- Питер Мюллер
- Франсуа Холланд
- Патрик О'Брайан
- Сильвана Кох-Мерин
Проверка имен - сложная проблема, поскольку действительные имена состоят не только из букв A-Z.
По крайней мере, вы должны использовать свойство Unicode для букв и добавлять дополнительные символы. Первым подходом может быть, например,:
String regx = "^[\\p{L} .'-]+$";
\\p{L}
- это Свойство символов Unicode, которое соответствует любому типу письма с любого языка
Ответ 2
попробуйте это регулярное выражение (позволяя алфавиты, точки, пробелы):
"^[A-Za-z\s]{1,}[\.]{0,1}[A-Za-z\s]{0,}$" //regular
"^\pL+[\pL\pZ\pP]{0,}$" //unicode
Это также гарантирует, что DOT никогда не появится в начале имени.
Ответ 3
Для тех, кто использует java/android и бороться с этим вопросом, попробуйте:
"^\\p{L}+[\\p{L}\\p{Z}\\p{P}]{0,}"
Это работает с именами типа
Ответ 4
Вы даже можете попробовать это выражение ^[a-zA-Z\\s]*$
для проверки строки только с буквами и пробелами (ничего больше).
Для меня это сработало. Надеюсь, это сработает и для вас.
Или пропустите этот кусок кода один раз:
CharSequence inputStr = expression;
Pattern pattern = Pattern.compile(new String ("^[a-zA-Z\\s]*$"));
Matcher matcher = pattern.matcher(inputStr);
if(matcher.matches())
{
//if pattern matches
}
else
{
//if pattern does not matches
}
Ответ 5
пожалуйста, попробуйте это регулярное выражение (разрешить только алфавиты и пробел)
"[a-zA-Z] [a-zA-Z] *"
если вы хотите это для IOS,
NSString *yourstring = @"hello";
NSString *Regex = @"[a-zA-Z][a-zA-Z ]*";
NSPredicate *TestResult = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",Regex];
if ([TestResult evaluateWithObject:yourstring] == true)
{
// validation passed
}
else
{
// invalid name
}
Ответ 6
Принять только символ с пробелом: -
if (!(Pattern.matches("^[\\p{L} .'-]+$", name.getText()))) {
JOptionPane.showMessageDialog(null, "Please enter a valid character", "Error", JOptionPane.ERROR_MESSAGE);
name.setFocusable(true);
}
Ответ 7
Шаблон регулярного выражения для соответствия только алфавитам и пробелам:
String regexUserName = "^[A-Za-z\\s]+$";
Ответ 8
Чтобы проверить только буквы и пробелы, попробуйте это
String name1_exp = "^[a-zA-Z]+[\-'\s]?[a-zA-Z ]+$";
Ответ 9
@amal. Этот код будет соответствовать вашим требованиям. Только буквы и пробелы между ними будут разрешены, без цифр. Текст начинается с любой буквы и может содержать только пробел. "^" обозначает начало строки, а "$" обозначает конец строки.
public static boolean validateLetters(String txt) {
String regx = "^[a-zA-Z ]+$";
Pattern pattern = Pattern.compile(regx,Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(txt);
return matcher.find();
}
Ответ 10
Мой личный выбор: ^\p{L}+[\p{L}\p{Pd}\p{Zs}']*\p{L}+$|^\p{L}+$
, где:
^\p{L}+
- должно начинаться с 1 или более букв.
[\p{Pd}\p{Zs}'\p{L}]*
- может содержать буквы, пробел (включая невидимые), тире или дефис и' в любом порядке 0 или более раз.
\p{L}+$
- должно заканчиваться 1 или более буквами.
|^\p{L}+$
- Или он должен содержать 1 или более букв (это делается для поддержки имен из одной буквы).
Поддержка точек (полных остановок) была исключена, например, в британском английском она может быть удалена в Mr или Mrs.
Ответ 11
Проверяет такие значения как: "", "FIR", "FIR", "FIR LAST"
/^[A-z]*$|^[A-z]+\s[A-z]*$/
Ответ 12
Проверь это.
String name validation only accept alphabets and spaces
public static boolean validateLetters(String txt) {
String regx = "^[a-zA-Z\\s]+$";
Pattern pattern = Pattern.compile(regx,Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(txt);
return matcher.find();
}
Ответ 13
Поддерживать язык, такой как хинди, который может содержать /p {Mark}, а также между языковыми символами. Мое решение - ^[\p{L}\p{M}]+([\p{L}\p{Pd}\p{Zs}'.]*[\p{L}\p{M}])+$|^[\p{L}\p{M}]+$
Вы можете найти все тестовые примеры для этого здесь https://regex101.com/r/3XPOea/1/tests
Ответ 14
Это работает для меня с проверкой начальной загрузки
$(document).ready(function() {
$("#fname").keypress(function(e) {
var regex = new RegExp("^[a-zA-Z ]+$");
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (regex.test(str)) {
return true;
}