与所有匹配模式的正则表达式模式的所有可能变体匹配的正则表达式模式

时间:2019-09-19 01:22:47

标签: regex

我有以下正则表达式模式,我想确保它只匹配与字母数字字符串匹配的正则表达式。

^\/\[(A\-Z|a\-z|0\-9){1}(?!\1)(A\-Z|a\-z|0\-9){1}(?!\2)(A\-Z|a\-z|0\-9){1}\]\/

如果没有正确使用字符范围,则不使用字符范围。

^\/\[(abcdefghijklmnopqrstuvwxyz|0123456789|ABCDEFGHIJKLMNOPQRSTUVWXYZ){1}(?!\1)(abcdefghijklmnopqrstuvwxyz|0123456789|ABCDEFGHIJKLMNOPQRSTUVWXYZ){1}(?!\2)(abcdefghijklmnopqrstuvwxyz|0123456789|ABCDEFGHIJKLMNOPQRSTUVWXYZ){1}\]\/

我有一个CTF挑战,让其类编写与字母数字字符串匹配的regex模式。我意识到不需要完整的字符,但是如果它们不立即考虑字符范围,我不希望它们失败。我在扩展模式下使用sed手动运行它,并在regexr上在线运行,但我担心自己可能会错过一些东西。

如果它们不使用字符范围,则第二个正则表达式模式是第二个标志。

这不是“代码高尔夫”风格的问题,或者至少对我而言不是。我有一个模式,我只需要验证没有奇怪的,晦涩的正则表达式技巧可以产生一个有效的正则表达式模式,该模式可以执行我告诉他们的操作,而我没有通过前面的两个模式进行介绍。

我应该说,我添加了一个附加的正则表达式模式(因为CTFd允许多个)可以按任何顺序匹配\ w \ d。

2 个答案:

答案 0 :(得分:1)

我猜测您可能正在尝试编写类似于以下内容的表达式:

^\/\[([A-Za-z0-9])(?!\1)([A-Za-z0-9])(?!\2)([A-Za-z0-9])\]\/

Demo


如果您希望简化/修改/探索表达式,请在regex101.com的右上角进行说明。如果愿意,您还可以在this link中查看它如何与某些示例输入匹配。


RegEx电路

jex.im可视化正则表达式:

enter image description here

答案 1 :(得分:1)

您的正则表达式仅匹配:/[A-Za-z0-9]/,不带锚和量词,建议您:

^\/\^?(?:\[(A-Z|a-z|0-9)(?!\1)(A-Z|a-z|0-9)(?!\1)(?!\2)(A-Z|a-z|0-9)\]|\[\^\\W_])[+*?]?\$?\/

匹配带有可选锚和可选量词的字母数字正则表达式,还匹配含义相同的短正则表达式/[^\W_]/(即非单词和下划线)

/[A-Za-z0-9]/
/[A-Za-z0-9]+/
/[A-Za-z0-9]*/
/^[A-Za-z0-9]/
/[A-Za-z0-9]$/
/^[A-Za-z0-9]+$/
/^[A-Za-z0-9]*$/
/^[A-Za-z0-9]?$/
/^[^\W_]+$/

Demo