android - 在正则表达式android中接受口音

标签 android regex diacritics

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/

相关文章:

android - 自动对焦 : select focus point

c++ - 为什么这个正则表达式不适用于 c++ TR1?

java - 从字符串中删除重音符号

postgresql - 用多字符字符串替换字符

Android:调试 native 代码时出现 Eclipse gdb 错误

从搜索中启动 Android Activity

javascript - 如何修复此@mention 正则表达式?

windows - 支持正则表达式的免费 Windows GUI 文本编辑器,适用于程序员?

excel - Microsoft Excel 破坏 .csv 文件中的变音符号?

android - Youtube 控件(播放/暂停)在播放器恢复/Activity 恢复后不起作用