我想以对RegEx的了解很少作为开头。

我正在尝试使以下RegEx与Javascript / Typescript一起使用:

/^({)?(?(1)|(\()?)[0-9A-F]{8}(-)?([0-9A-F]{4}(?(3)-)){3}[0-9A-F]{12}(?(1)}|(?(2)\)))$/i

这是RegEx,用于确定字符串是否为有效的GUID(采用任何正确的形式;如此处所示:https://stackoverflow.com/a/136591)。它适用于Python和PHP,但不适用于Javascript,因为它不支持条件语句。您将如何使用Javascript来使用它?

您可以在这里进行测试:
https://regex101.com/r/rosi2k/1/tests

最佳答案

您不能使用条件条件,因此唯一的选择是扩展已经存在的条件。从最里面的组(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

关于javascript - 正则表达式的替代条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49016952/

10-11 23:44