Regex 正则表达式来匹配包含与字母一样多的数字的字符串
我正在尝试创建一个正则表达式来匹配具有以下条件的字符串:Regex 正则表达式来匹配包含与字母一样多的数字的字符串,regex,Regex,我正在尝试创建一个正则表达式来匹配具有以下条件的字符串: 字符串必须包含偶数个字符 字符串必须包含与字母一样多的数字 应匹配: A3D4 A34DF5 22日 我试过了,但没有找到解决办法。您能帮我一下吗?使用regexp只保留字母或数字,并进行比较: (javascript中的示例) 如果您使用的编程语言支持,那么以下语言应该适合您的需要: ^([A-Z](?1)*[0-9]|[0-9](?1)*[A-Z])+$ 可视化 漂亮的regexp:)上的演示(但与A23B不匹配)是的,+修复
- A3D4
- A34DF5
- 22日
我试过了,但没有找到解决办法。您能帮我一下吗?使用regexp只保留字母或数字,并进行比较: (javascript中的示例)
如果您使用的编程语言支持,那么以下语言应该适合您的需要:
^([A-Z](?1)*[0-9]|[0-9](?1)*[A-Z])+$
可视化
漂亮的regexp:)上的演示(但与A23B不匹配)是的,
+
修复了它,Sly。或者这里有一个更有效的版本,回溯更少^(?([a-Z](?1)*[0-9])|([0-9](?2)*[a-Z])+$
@Sly这是一个很好的修复,谢谢,我更新了我的答案。@Zantier我不确定你的版本更有效,因为实际上有更多的递归(两个子组)。比较两者会很有趣。我的避免了很多冗余匹配,如果输入很大,这可能会很有用。例如,通过输入a1a1a1a1
,regex101.com左侧的“regex调试器”显示您的步骤为73727步,我的步骤为100步。当然,除非您真的必须使用正则表达式,否则有更好的方法可以更有效地解决问题。
var str = 'A34DF5';
var result = str.replace(/[^a-z]/gi,'').length == str.replace(/[^0-9]/gi,'').length ;