java - 正则表达式需要一个字母和一个非字母并且没有空格
问题描述
我想在 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*$
推荐阅读
- powershell - Powershell枚举访问数据库中的子对象
- php - laravel 不显示来自 mysql 数据库的图像
- asp.net-mvc - 带有 .NET Framework 客户端的 IdentityServer4
- oracle - 循环并选择每一行的结果
- c - 如何从函数返回数组?
- java - 在 ListAdapter 我无法更新数据
- java - android studio Viewpager OnClickListener 不工作
- c# - C# LINQ 查询嵌套 JSON 列表
- c# - NUnit 测试无法识别 gcAllowVeryLargeObjects 设置
- python - 基于键的total和groupby的字典集合列表