我希望正则表达式只验证字母和空格。基本上这是验证全名。例如:史蒂夫柯林斯先生或史蒂夫柯林斯我试过这个正则表达式。 “[1 - 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();
}
答案 0 :(得分:81)
怎么样:
验证名称是一个难题,因为有效名称不仅包含字母A-Z。
至少应该对字母使用Unicode属性并添加更多特殊字符。第一种方法可能是例如:
String regx = "^[\\p{L} .'-]+$";
\\p{L}
是Unicode Character Property,可以匹配来自任何语言的任何类型的字母
答案 1 :(得分:11)
试试这个正则表达式(允许字母,点,空格):
"^[A-Za-z\s]{1,}[\.]{0,1}[A-Za-z\s]{0,}$" //regular
"^\pL+[\pL\pZ\pP]{0,}$" //unicode
这也将确保DOT永远不会出现在名称的开头。
答案 2 :(得分:11)
对于那些使用java / android并且努力解决这个问题的人来说:
"^\\p{L}+[\\p{L}\\p{Z}\\p{P}]{0,}"
这适用于像
这样的名称答案 3 :(得分:5)
您甚至可以尝试使用此表达式^[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
}
答案 4 :(得分:4)
请尝试此正则表达式(仅允许使用字母和空格)
“[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
}
答案 5 :(得分:2)
仅接受带空格的字符: -
if (!(Pattern.matches("^[\\p{L} .'-]+$", name.getText()))) {
JOptionPane.showMessageDialog(null, "Please enter a valid character", "Error", JOptionPane.ERROR_MESSAGE);
name.setFocusable(true);
}
答案 6 :(得分:2)
仅匹配字母和空格的正则表达式模式:
String regexUserName = "^[A-Za-z\\s]+$";
答案 7 :(得分:1)
要仅验证字母和空格,请尝试此
String name1_exp = "^[a-zA-Z]+[\-'\s]?[a-zA-Z ]+$";
答案 8 :(得分:0)
@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();
}
答案 9 :(得分:0)
我个人的选择是:
^\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}+$
- 或者它应该包含一个或多个字母(这样做是为了支持单个字母的名称)。
支持点(句号)被删除,例如在英国英语中,它可以放在先生或夫人身上。
答案 10 :(得分:0)
验证以下值: “”,“FIR”,“FIR”,“FIR LAST”
/^[A-z]*$|^[A-z]+\s[A-z]*$/
答案 11 :(得分:0)
检查一下。
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();
}
答案 12 :(得分:0)
支持类似印地语的语言,该语言在两个语言字符之间也可以包含/ 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
答案 13 :(得分:0)
尝试一下:
public static boolean userNameValidation(String name){
return name.matches("(?i)(^[a-z])((?![? .,'-]$)[ .]?[a-z]){3,24}$");
}
答案 14 :(得分:-1)
通过验证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;
}