Подтвердить что ты не робот

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();

}
4b9b3361

Ответ 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;
}