什么是匹配长度为两个或三个字符的字符串的正则表达式,其中最多一个字符是一个数字,其余字母是字母?
匹配输入的示例:
T4
T4T
4TT
TT
不匹配输入的示例:
T
T44
T4TT
_4_
答案 0 :(得分:2)
使用负面预测断言最多1位数:
^(?!.*\d.*\d)[^\W_]{2,3}$
说明:
(?!.*\d.*\d)
表示"断言在此之后有不 2位" \W
表示"非单词字符" - 一个"字符"是任何字母,数字或下划线。这与\w
相反,这意味着"一个单词字符"。 \W
与[^\w]
[^\W_]
表示"既不是非单词字符也不是下划线"它与[0-9a-zA-Z]
相同,但写入时间更短{2,3}
表示"在前一个词的2到3(含)之间" 我非常确定这是最短的解决方案。
请参阅live demo与您的测试用例。
答案 1 :(得分:1)
答案 2 :(得分:1)
使用否定预测,您可以使用此正则表达式:
^(?![a-zA-Z]*\d+[a-zA-Z]*\d)[a-zA-Z\d]{2,3}$
(?![a-zA-Z]*\d+[a-zA-Z]*\d)
为使比赛失败的负面预测[a-zA-Z\d]{2,3}
将匹配由字母和数字组成的2或3个字符。