Java 我需要关于正则表达式的帮助,以允许带有字符的数字

Java 我需要关于正则表达式的帮助,以允许带有字符的数字,java,regex,Java,Regex,条件: 123 not valid 123 A valid abc123 valid abc123Ab valid 我必须应用正则表达式强制字符和数字 (([a-zA-Z\s])*(\d{1,})([a-zA-Z\s]){1,}|([a-zA-Z\s]){1,}(\d{1,})([a-zA-Z\s])*) 此表达式的第一部分将确保字符串可以不带任何字母开始,但至少必须有1个数字,并且应该以1个或多个字母结束。第二部分将确保字符串可以

条件:

123           not valid
123 A         valid
abc123        valid
abc123Ab      valid
我必须应用正则表达式强制字符和数字

(([a-zA-Z\s])*(\d{1,})([a-zA-Z\s]){1,}|([a-zA-Z\s]){1,}(\d{1,})([a-zA-Z\s])*)

此表达式的第一部分将确保字符串可以不带任何字母开始,但至少必须有1个数字,并且应该以1个或多个字母结束。第二部分将确保字符串可以以至少1个字母开头,后跟至少1个数字,然后后跟0或任意数量的字母。

这将匹配任何以可选数字集开头,后跟空格、字母和数字组合的字符串。但它仍然匹配
123
(即
123后跟空格
`)

下面将检查字符串中是否至少有一个字母与可选数字、空格和字母组合

[a-zA-Z\s\d]*[a-zA-Z]+?[a-zA-Z\s\d]*
  • [a-zA-Z\s\d]
    匹配
    []
    中的单个字符
  • 量词
    *
    :在零次和无限次之间,尽可能多次,根据需要回馈[贪婪]
  • 量词:
    +?
    在一次和无限次之间,尽可能少的次数,根据需要扩展[lazy]

您尝试过什么吗?您可以使用在线工具来实现对正则表达式的测试,例如:
[a-zA-Z\s\d]*[a-zA-Z]+?[a-zA-Z\s\d]*