Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式来匹配包含与字母一样多的数字的字符串_Regex - Fatal编程技术网

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 ;