web-dev-qa-db-ja.com

Javaフルネームを検証する正規表現はスペースと文字のみを許可します

正規表現で文字とスペースのみを検証したい。基本的に、これはフルネームを検証することです。例:Mr Steve CollinsまたはSteve Collinsこの正規表現を試しました。 「[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();

}
31
amal

どうですか:

  • ピーター・ミュラー
  • フランソワ・オランド
  • パトリック・オブライアン
  • シルヴァナ・コッホ・メリン

有効な名前はA〜Zの文字だけで構成されているわけではないため、名前の検証は難しい問題です。

少なくとも文字にはUnicodeプロパティを使用し、特殊文字を追加する必要があります。最初のアプローチは、例えば:

String regx = "^[\\p{L} .'-]+$";

\\p{L}nicode Character Property であり、あらゆる言語のあらゆる種類の文字に一致します。

82
stema

この正規表現を試してください(アルファベット、ドット、スペースを許可):

"^[A-Za-z\s]{1,}[\.]{0,1}[A-Za-z\s]{0,}$" //regular
"^\pL+[\pL\pZ\pP]{0,}$" //unicode

これにより、DOTが名前の先頭に来ないようにもなります。

12
Raheel Hasan

Java/Androidを使用し、この問題に苦労している人のために:

"^\\p{L}+[\\p{L}\\p{Z}\\p{P}]{0,}"

これは次のような名前で動作します

  • ホセ・ブラサン
12
Ziza

この式を試すこともできます^[a-zA-Z\\s]*$は、文字とスペースのみの文字列をチェックするためのものです(他には何もありません)。

私にとってはうまくいきました。それがあなたにも役立つことを願っています。

または、次のコードを1回実行します。

    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
Rahul Sahay

この正規表現を試してください(アルファベットとスペースのみ許可)

「[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
}
4
jay

アルファベットと空白のみを照合するための正規表現パターン:

String regexUserName = "^[A-Za-z\\s]+$";
2
Rahul Raina

スペースのある文字のみを受け入れます:-

 if (!(Pattern.matches("^[\\p{L} .'-]+$", name.getText()))) {
    JOptionPane.showMessageDialog(null, "Please enter a valid character", "Error", JOptionPane.ERROR_MESSAGE);
    name.setFocusable(true);
    }  
2

文字とスペースのみを検証するには、これを試してください

String name1_exp = "^[a-zA-Z]+[\-'\s]?[a-zA-Z ]+$";
1
Vijay Chauhan

これをチェックしてください。

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

}
0
M Manzar AbBas

これは、ブートストラップの検証で機能します

$(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;
}
0
SANDEEP KHANDAY

私の個人的な選択は:^\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文字以上を含める必要があります(1文字の名前をサポートするために行われます)。

ドット(フルストップ)のサポートは削除されました。たとえば、イギリス英語ではMrまたはMrsで削除できるためです。

0
Nick Sikrier

次のような値を検証します: ""、 "FIR"、 "FIR"、 "FIR LAST"

/^[A-z]*$|^[A-z]+\s[A-z]*$/
0
Purkhalo Alex

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

}
0
Sokunthaneth

言語文字の間に/ 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

0
Rishabh876