嗨,我需要做一些验证,并确保字符串不包含任何特殊字符或数字。然而,我正在使用西班牙语,因此,我需要重音字母和普通字母也允许与空格。
String text = "áa @s";
text = text.toLowerCase();
if(text.matches(".*\\p{L}.*") && !text.matches(".*\\d+.*"))
System.out.println("SI");
这里的输出将打印"SI“,但不应该包含"@”,因为它包含“@”,这段代码排除了数字,允许重音西班牙字母,但我想阻止特殊字符,并将它们排除在外。任何帮助都将不胜感激。注意:我对任何方法都是灵活的,只要我实现了一个干净的西班牙字符串的目标,只有字母(包括重音字母)和空格。最后,如果在一个正则表达式中进行所有这些操作,这将是非常感谢的。
发布于 2016-02-06 03:13:33
\p{L}
与unicode字母(相对于任何符号)匹配,这是可行的方法。
但是,您肯定会发现,它并不(总是)匹配重音字母。这是因为在unicode中,重音字母有时可以表示为两个字符:没有重音的字母,后面是代表重音的组合标记。
与这些类匹配的类是\p{M}
,它为我们提供了以下代码(考虑到您说希望包含空格的注释):
if(text.matches("(?:\\p{L}\\p{M}*\\s*)+")) { System.out.println("Muy bien !"); }
更多信息,这里。
https://stackoverflow.com/questions/35236764
复制相似问题