匹配和从string中提取信息的特定模式

我需要能够识别string,如果它匹配以下模式:

':module-name'|| 'com.example.ClassName'|| ':module-name:com.example.ClassName'|| ' http:// url ';

我需要确定string是否匹配上述模式之一,让我们将它们分成3组(url,local和none),其中url代表有效的urlstring。 另一方面,本地必须有3个不同的变体(':module-name'||'com.example.ClassName'||':module-name:com.example.ClassName')如果这是我需要的情况提取模块和组件名称。

模块名称必须是有效的nodejs包名称,组件名称必须是有效的类名称(我已获得此RegExp已覆盖的有效类名称:/ ^ @?[a-z_A-Z] \ w +(?:。 @?[A-z_A-Z] \ w +)* $ /)。

我需要的是一种方法来确定string属于哪个组(本地或无),在本地的情况下,提取模块和组件名称。 正则expression式解决scheme的最佳…

谢谢

这可以工作吗? 请参阅regex101

 ^:.+-.+:.+\..+\..+|^:.+-.+|^.+\..+\..+|^http[s]?:\/\/.+ 

它匹配:xxxxx:xx:xxxhttp[s]://x ,x是在1和无限次之间重复的任何字符。 如果前面有某些东西,它们将不匹配。 但它会匹配com.class.class.class.classhttp://invalidUrl 。 正如你所说,你检查class级名称是否好。 如果你只想要有效的url,那么你可以使用https?:\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?replace^http[s]?:\/\/.+ https?:\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))? 或任何正则expression式validationurl。 (我没有发明这个)

通过使用Croutonix引用的惊人的networking工具,我能够生成RegExp并实时testing它:

解决scheme是:([az] [a-z_-] )+:{0,1}([a-z_A-Z] \ w +(?:。[a-z_A-Z] \ w +) ) $ / gm.exec(串)