friend 们...
我在通过正则表达式接受 android 中的口音时遇到了麻烦...我们为 java 尝试的所有东西都无法正常工作,android 不希望我们的口音..
我有以下正则表达式:
Pattern pattern = Pattern.compile("[a-zA-ZñÑáéíóúÁÉÍÓÚ]+");
关于如何在 android 中包含 ñ 和重音人声的任何提示?
非常感谢...
这是我们的验证函数:
public static boolean validarNombres(String nameToValidate){
byte step = 1;
byte minWords = 2;
byte maxWords = 5;
boolean validName = false;
String[] aux;
Matcher matcher = null;
Pattern pattern = Pattern.compile("[\\p{L}\\p{M}]+");
aux = nameToValidate.split(" ");
//PASO 2: check that the name has from 2 to 5 words
if(aux.length >= minWords && aux.length <= maxWords){
step++;
matcher = pattern.matcher(nameToValidate);
}
//PASO 3: check that the name matches out regex
if(step==2 && matcher.matches()){
validName = true;
}
return validName;
}
编辑:认为发现了错误...我们不包括名字和名字之间的空格...当我们只检查一个单词但不检查全名时它工作正常...现在.. .. 在我们的正则表达式中包含空格的代码是什么?请
非常感谢
最佳答案
要验证由 2 到 5 个以空格分隔的单词组成的字符串,您可以使用
public static boolean validarNombres(String nameToValidate) {
return nameToValidate.matches("[\\p{L}\\p{M}]+(?:\\s[\\p{L}\\p{M}]+){1,4}");
}
当使用 .matches()
方法时,正则表达式默认锚定,不需要添加 ^
和 $
。
图案细节:
[\\p{L}\\p{M}]+
- 1 个或多个字母或/和变音符号(?:\\s[\\p{L}\\p{M}]+){1,4}
- 1 到 4(所以,总共 2 到 5)序列:\\s
- 一个空格[\\p{L}\\p{M}]+
- 1 个或多个字母或/和变音符号
参见 regex demo .
关于android - 在正则表达式android中接受口音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43274038/