我想在此基础上加上我对RegEx
的了解甚少。
我试图让以下RegEx与Javascript / Typescript一起使用:
/^({)?(?(1)|(\()?)[0-9A-F]{8}(-)?([0-9A-F]{4}(?(3)-)){3}[0-9A-F]{12}(?(1)}|(?(2)\)))$/i
这是用于确定字符串是否是有效GUID的RegEx(以任何正确的形式;如下所示:https://stackoverflow.com/a/136591)。它适用于Python和PHP,但不适用于Javascript,因为它不支持条件。你会如何以Javascript可以使用它的方式编写它?
你可以在这里测试一下: https://regex101.com/r/rosi2k/1/tests
答案 0 :(得分:2)
您无法使用条件,因此唯一的选择是扩展已存在的条件。从最里面的组(3)开始,您可以将以下部分转换为它的扩展对应部分:
(-)?([0-9A-F]{4}(?(3)-)){3}
(?:-([\dA-F]{4}-){3}|[\dA-F]{12})
现在唯一剩下的就是扩展围绕正则表达式其余部分的第1组和第2组:
^(?:{[\dA-F]{8}(?:-([\dA-F]{4}-){3}|[\dA-F]{12})[0-9A-F]{12}}|\([\dA-F]{8}(?:-([\dA-F]{4}-){3}|[\dA-F]{12})[0-9A-F]{12}\)|[\dA-F]{8}(?:-([\dA-F]{4}-){3}|[\dA-F]{12})[0-9A-F]{12})$
它很难看,但它适用于您的测试as shown here