首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >reged允许西班牙语中的普通字母和重音字母,但阻止特殊字符和数字。

reged允许西班牙语中的普通字母和重音字母,但阻止特殊字符和数字。
EN

Stack Overflow用户
提问于 2016-02-06 02:46:24
回答 1查看 1.9K关注 0票数 0

嗨,我需要做一些验证,并确保字符串不包含任何特殊字符或数字。然而,我正在使用西班牙语,因此,我需要重音字母和普通字母也允许与空格。

代码语言:javascript
运行
复制
        String text = "áa @s";
    text = text.toLowerCase();
    if(text.matches(".*\\p{L}.*") && !text.matches(".*\\d+.*"))
        System.out.println("SI");

这里的输出将打印"SI“,但不应该包含"@”,因为它包含“@”,这段代码排除了数字,允许重音西班牙字母,但我想阻止特殊字符,并将它们排除在外。任何帮助都将不胜感激。注意:我对任何方法都是灵活的,只要我实现了一个干净的西班牙字符串的目标,只有字母(包括重音字母)和空格。最后,如果在一个正则表达式中进行所有这些操作,这将是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-06 03:13:33

\p{L}与unicode字母(相对于任何符号)匹配,这是可行的方法。

但是,您肯定会发现,它并不(总是)匹配重音字母。这是因为在unicode中,重音字母有时可以表示为两个字符:没有重音的字母,后面是代表重音的组合标记。

与这些类匹配的类是\p{M},它为我们提供了以下代码(考虑到您说希望包含空格的注释):

代码语言:javascript
运行
复制
if(text.matches("(?:\\p{L}\\p{M}*\\s*)+")) { System.out.println("Muy bien !"); }

更多信息,这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35236764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档