Je veux que regex ne valide que les lettres et les espaces. Fondamentalement, cela consiste à valider le nom complet. Ex: M. Steve Collins ou Steve Collins J'ai essayé cette regex. "[a-zA-Z] + \.?" Mais n'a pas fonctionné. Quelqu'un peut-il m'aider s'il vous plaît P.s. J'utilise 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();
}
Qu'en est-il de:
La validation des noms est une question difficile, car les noms valides ne sont pas uniquement composés des lettres A à Z.
Au moins, vous devez utiliser la propriété Unicode pour les lettres et ajouter davantage de caractères spéciaux. Une première approche pourrait être par exemple:
String regx = "^[\\p{L} .'-]+$";
\\p{L}
est une propriété de caractère Unicode qui correspond à tout type de lettre de n'importe quelle langue
essayez cette regex (autorisant les alphabets, les points et les espaces):
"^[A-Za-z\s]{1,}[\.]{0,1}[A-Za-z\s]{0,}$" //regular
"^\pL+[\pL\pZ\pP]{0,}$" //unicode
Cela garantira également que DOT ne vienne jamais au début du nom.
Pour ceux qui utilisent Java/Android et qui ont du mal à résoudre ce problème, essayez:
"^\\p{L}+[\\p{L}\\p{Z}\\p{P}]{0,}"
Cela fonctionne avec des noms comme
Vous pouvez même essayer cette expression ^[a-zA-Z\\s]*$
pour vérifier une chaîne composée uniquement de lettres et d'espaces (rien d'autre).
Pour moi cela a fonctionné. J'espère que cela fonctionne pour vous aussi.
Ou parcourez ce morceau de code une fois:
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
}
s'il vous plaît essayez cette regex (n'autorisez que les alphabets et l'espace)
"[a-zA-Z] [a-zA-Z] *"
si vous le souhaitez pour 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
}
Motif regex pour ne faire correspondre que les alphabets et les espaces:
String regexUserName = "^[A-Za-z\\s]+$";
N'accepte que les caractères avec espace: -
if (!(Pattern.matches("^[\\p{L} .'-]+$", name.getText()))) {
JOptionPane.showMessageDialog(null, "Please enter a valid character", "Error", JOptionPane.ERROR_MESSAGE);
name.setFocusable(true);
}
Pour valider uniquement les lettres et les espaces, essayez ceci
String name1_exp = "^[a-zA-Z]+[\-'\s]?[a-zA-Z ]+$";
regarde ça.
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();
}
Cela fonctionne pour moi avec la validation de bootstrap
$(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;
}
Mon choix personnel est: ^\p{L}+[\p{L}\p{Pd}\p{Zs}']*\p{L}+$|^\p{L}+$
, Où:
^\p{L}+
- Il devrait commencer par 1 ou plusieurs lettres.
[\p{Pd}\p{Zs}'\p{L}]*
- Il peut contenir des lettres, des espaces (y compris les caractères invisibles), des tirets ou des traits d'union et 'dans n'importe quel ordre de 0 ou plusieurs fois.
\p{L}+$
- Il devrait se terminer par 1 ou plusieurs lettres.
|^\p{L}+$
- ou il devrait simplement contenir 1 ou plusieurs lettres (c’est fait pour supporter les noms de lettre simple).
La prise en charge des points (points) a été supprimée. En anglais britannique, elle peut être supprimée dans M. ou Mme, par exemple.
Valide des valeurs telles que: "", "FIR", "FIR", "FIR LAST"
/^[A-z]*$|^[A-z]+\s[A-z]*$/
@ amal. Ce code correspondra à vos besoins. Seules la lettre et l'espace entre les deux seront autorisées, pas de chiffre. Le texte commence par une lettre et peut contenir un espace uniquement. "^" indique le début de la ligne et "$" indique la fin de la ligne.
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();
}
Pour prendre en charge une langue telle que l'hindi pouvant contenir/p {Mark}, ainsi qu'entre les caractères de la langue. Ma solution est ^[\p{L}\p{M}]+([\p{L}\p{Pd}\p{Zs}'.]*[\p{L}\p{M}])+$|^[\p{L}\p{M}]+$
Vous pouvez trouver tous les cas de test pour cela ici https://regex101.com/r/3XPOea/1/tests