我想在 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/