Regex 正在验证最后两个字符是否符合模式

Regex 正在验证最后两个字符是否符合模式,regex,alphanumeric,Regex,Alphanumeric,我有一个字符串abcdefgh 我想检查最后两个字符是否为字母数字/字母表,但不是数字 i、 e.它可以以a1、1a、aa结尾,但不能以11 有没有能插手的regex大师 正则表达式应该为字符串返回以下结果 abcd-正确 abc1d-正确 abcd1-正确 abc12-错误这应该可以做到: ^.*(\d[a-zA-Z]|[a-zA-Z](\d|[a-zA-Z]))$ 意思是: ^ the beginning of the string .*

我有一个字符串
abcdefgh

我想检查最后两个字符是否为字母数字/字母表,但不是数字

i、 e.它可以以
a1
1a
aa
结尾,但不能以
11

有没有能插手的regex大师

正则表达式应该为字符串返回以下结果

abcd-正确 abc1d-正确 abcd1-正确 abc12-错误

这应该可以做到:

^.*(\d[a-zA-Z]|[a-zA-Z](\d|[a-zA-Z]))$

意思是:

^                       the beginning of the string
.*                      any character except \n (0 or more times)
(                        
 \d[a-zA-Z]             a digit (0-9) followed by any character of a to z, A to Z
 |                      OR
 [a-zA-Z]               any character of a to z, A to Z followed by
 (\d|[a-zA-Z])          a digit or any character of a to z, A to Z
)                         
$                       end of the string
请注意,这将匹配整个字符串,而不仅仅是最后两个字符,这些字符位于您可以使用的匹配组中

^.*[A-Za-z].|.[A-Za-z]$

那么,一个字母和一个数字,或者一个数字和一个字母,或者两个字母

([a-zA-Z]\d|\d[a-zA-Z]|[a-zA-Z][a-zA-Z])$
根据您使用的正则表达式系统,您还可以使用字符类,例如
:alpha:
,但这一类适用于所有字符类。某些正则表达式语法需要在括号和/或管道符号前面加反斜杠。

您可以使用:

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

说明:


这让人困惑:
11
是一个字母数字字符字符串。这是我奇怪的要求,虽然NN是字母数字的,但我不允许它。询问代码的问题必须证明在解决实际问题时付出了最小的努力,包括尝试的代码和遇到的问题否,这与
aa
@PeterWestlake不匹配,你说得对。已修复。注意-
(\d|[a-zA-Z])
=
[\da-zA-Z]
。它通过a1、1a,但失败aa@MohammedRafeeq是的,但我编辑过。查看更新的答案。不,这与非数字匹配,例如
a@PeterWestlake我很清楚这一点。但这个问题非常不清楚。“数字”一词在问题中不存在。@SvenHohenstein同意它不清楚(除非/直到澄清,否则应关闭),但“字母数字”确实出现在问题中,这
a不是。@Dukeling是对的,但是
11
是字母数字的,无效。