正規表現で文字とスペースのみを検証したい。基本的に、これはフルネームを検証することです。例: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();
}
どうですか:
有効な名前はA〜Zの文字だけで構成されているわけではないため、名前の検証は難しい問題です。
少なくとも文字にはUnicodeプロパティを使用し、特殊文字を追加する必要があります。最初のアプローチは、例えば:
String regx = "^[\\p{L} .'-]+$";
\\p{L}
は nicode Character Property であり、あらゆる言語のあらゆる種類の文字に一致します。
この正規表現を試してください(アルファベット、ドット、スペースを許可):
"^[A-Za-z\s]{1,}[\.]{0,1}[A-Za-z\s]{0,}$" //regular
"^\pL+[\pL\pZ\pP]{0,}$" //unicode
これにより、DOTが名前の先頭に来ないようにもなります。
Java/Androidを使用し、この問題に苦労している人のために:
"^\\p{L}+[\\p{L}\\p{Z}\\p{P}]{0,}"
これは次のような名前で動作します
この式を試すこともできます^[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
}
この正規表現を試してください(アルファベットとスペースのみ許可)
「[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
}
アルファベットと空白のみを照合するための正規表現パターン:
String regexUserName = "^[A-Za-z\\s]+$";
スペースのある文字のみを受け入れます:-
if (!(Pattern.matches("^[\\p{L} .'-]+$", name.getText()))) {
JOptionPane.showMessageDialog(null, "Please enter a valid character", "Error", JOptionPane.ERROR_MESSAGE);
name.setFocusable(true);
}
文字とスペースのみを検証するには、これを試してください
String name1_exp = "^[a-zA-Z]+[\-'\s]?[a-zA-Z ]+$";
これをチェックしてください。
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();
}
これは、ブートストラップの検証で機能します
$(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;
}
私の個人的な選択は:^\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で削除できるためです。
次のような値を検証します: ""、 "FIR"、 "FIR"、 "FIR LAST"
/^[A-z]*$|^[A-z]+\s[A-z]*$/
@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();
}
言語文字の間に/ 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