接受正则表达式android中的acents

时间:2017-04-07 09:03:21

标签: android regex diacritics

伙伴......

我遇到麻烦来通过一个正则表达式接受android中的重音...我们尝试过的所有东西都不能正常运行,并且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;
}
编辑:想想发现错误......我们没有包括第一个和第二个名字之间的空白......当我们检查一个单词时它工作正常,但不是全名...现在.. .. 什么代码在我们的正则表达式中包含空格?请

非常感谢

1 个答案:

答案 0 :(得分:1)

要验证由空格分隔的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}]+ - 一个或多个字母或/和变音符号
  • (?:\\s[\\p{L}\\p{M}]+){1,4} - 1到4(因此,总共2到5个)序列:
    • \\s - 一个空白
    • [\\p{L}\\p{M}]+ - 一个或多个字母或/和变音符号

请参阅regex demo