正则表达式验证数字和字母序列

kjv*_*kjv 1 regex

我想要一个正则表达式来验证AABBAAA形式的输入,其中A是一个字母(az,AZ),B是一个数字(0-9).所有的As必须是相同的,Bs也必须如此.

Mic*_*ers 6

它真的不像你想象的那么难; 你已经掌握了大部分语法.

[a-zA-Z]{2}[0-9]{2}[a-zA-Z]{3}
Run Code Online (Sandbox Code Playgroud)

大括号({})中的数字表示匹配前一个字符或一组字符的次数,因此匹配[a-zA-Z]两次,[0-9]两次和[a-zA-Z]三次.

 
编辑:如果要确保匹配的字符串不是较长字符串的一部分,可以使用字边界 ; 只需添加\b到正则表达式的每一端:

\b[a-zA-Z]{2}[0-9]{2}[a-zA-Z]{3}\b
Run Code Online (Sandbox Code Playgroud)

现在" Ab12Cde "将匹配,但"YZ Ab12Cde fg"将不会.

 
编辑2:现在问题已经改变,反向引用是唯一的方法.edsmilde的答案应该有效; 但是,您可能需要添加单词边界以获得最终解决方案.

\b([a-zA-Z])\1([0-9])\2\1\1\1\b
Run Code Online (Sandbox Code Playgroud)

  • 如果这是锚定的,那么禁止BBAABBAAABB? (5认同)

eds*_*eds 6

如果所有的AB都应该是相同的,我认为唯一的方法是:

([a-zA-Z])\1([0-9])\2\1\1\1
Run Code Online (Sandbox Code Playgroud)

其中\ 1\ 2指的是第一和第二个括号分组.但是,我不认为所有正则表达式引擎都支持这一点.