正则表达式匹配包含相同数量数字和字母的字符串

3

我试图创建一个正则表达式,以匹配具有以下特点的字符串:

  1. 该字符串必须包含偶数个字符
  2. 该字符串中必须包含与字母数量相同的数字

应该匹配:

  • A3D4
  • A34DF5
  • 22FF

我尝试了一下,但没有找到解决方案。您能帮我吗?

2个回答

4

2
漂亮的正则表达式 :) (但不匹配A23B) - Sly
1
没错,+修复了它,Sly。或者这里有一个更有效率的版本,带有较少的回溯:^(?:([A-Z](?1)*[0-9])|([0-9](?2)*[A-Z]))+$ - Zantier
1
@Sly 这是一个不错的修复,谢谢你,我已经更新了我的答案。 - sp00m
@Zantier 我不确定你的方法更有效率,因为实际上有更多的递归(两个子组)。比较一下两种方法会很有趣。 - sp00m
我的避免了大量的冗余匹配,如果输入很大的话,这可能会非常有用。例如,针对输入 A1A1A1A1A1A1A1A1A1A1A1A1A1 ,regex101.com 左侧的"正则表达式调试器"显示您的需 73727 步,而我的只需要 100 步。当然,除非您确实必须使用正则表达式,否则有更好的方法可以更有效地解决问题。 - Zantier

2

使用正则表达式仅保留字母或数字并进行比较: (以 JavaScript 为例)

var str = 'A34DF5';
var result = str.replace(/[^a-z]/gi,'').length == str.replace(/[^0-9]/gi,'').length ;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接