java - 正则表达式要求一种字母和一种非字母并且没有空格

标签 java regex

我想在 Java 中创建一个正则表达式来匹配至少 1 个字母和 1 个非字母(可以是除 A-Za-z 之外的任何字母)并且没有空格。

下面的正则表达式部分正确工作:

^([A-Za-z]{1,}[^A-Za-z]{1,})+$

它匹配aaaa7777 但与 777aaaaa 不匹配。

任何帮助将不胜感激。

最佳答案

您的正则表达式隐式假定您要匹配的字符的顺序。正则表达式表示字母必须位于非后者之前。但是,您希望字母和非字母以任一顺序出现,因此您需要考虑这两种情况。另请注意,它应该是 [^\sa-zA-Z] 而不是 [^a-zA-Z] 因为不允许空格。

(?:[a-zA-Z][^\sa-zA-Z]|[^\sa-zA-Z][a-zA-Z])

在开始和结束处,允许使用任何非空格字符,因此:

^\S*(?:[a-zA-Z][^\sa-zA-Z]|[^\sa-zA-Z][a-zA-Z])\S*$

关于java - 正则表达式要求一种字母和一种非字母并且没有空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59355349/

相关文章:

java - 错误: deleting all rows instead of 1 row Android

python - 相同的正则表达式不适用于我的本地环境

Javascript 正则表达式替换 HTML 中的所有电话号码

regex - 在 Perl 中,如何打印从文件中读取的行,并删除了可选的前导空格?

r - 将列表类型列与 DF 中的其他列匹配

java - 如何使用 lambda 产品过滤 Java 8 中的嵌套流

Java - 如何调试任务<Void>?

java - 带条件的 Spring Integration header 值路由器

java - 如何在 spring boot 中处理 @secured 的异常

regex - VB.NET 匹配圆括号(brackets)之间的字符串