一个字母和三个数字的正则表达式

时间:2017-06-16 10:38:05

标签: regex

我尝试使用此RegEX无解决方案

wdata

测试用例:有效

123D

F311

12D3

99A9

3 个答案:

答案 0 :(得分:5)

如果组合可以按任何顺序排列,您可能需要明确列出备选方案,具体取决于您的正则表达式支持的内容:

^([a-zA-Z]\d{3}|\d[a-zA-Z]\d{2}|\d{2}[a-zA-Z]\d|\d{3}[a-zA-Z])$

答案 1 :(得分:1)

请根据您的要求检查以下表达

(?=(?:.*\d){3})(?=(?:.*[a-zA-Z]){1})^[a-zA-Z\d]*$

<强>击穿

寻找至少3位数:

(?=(?:.*\d){3})

寻找至少1个字母:

(?=(?:.*[a-zA-Z]){1})

定义开始和结束之间允许的内容:

^[a-zA-Z\d]*$

您可以查看示例here

答案 2 :(得分:0)

您可以使用前瞻来检查是否只有一个字母(不区分大小写)和数字:

^(?=\d*[a-z]\d*$).{4}$

或4个字符:

^(?=.{4}$)\d*[a-z]\d*$

如果前瞻不可用,您可以使用@cmbuckley模式,但您也可以将其分解。 ERE中的一个例子:

^([0-9]([0-9]([0-9][a-z]|[a-z][0-9])|[a-z][0-9]{2})|[a-z][0-9]{3})$

暂且不说:永远不要使用量词{1},默认情况下,每个没有量词的令牌都会出现一次。