如果符合以下模式,我需要能够识别字符串:
':module-name'|| 'com.example.ClassName'|| ':module-name:com.example.ClassName'|| 'http://url';
我需要确定字符串是否与上述模式之一匹配,让我们将它们分成3组(url,local& none),其中url代表有效的url字符串。另一方面,local必须有3种不同的变体(':module-name'||'com.example.ClassName'||':module-name:com.example.ClassName')如果是这种情况我需要提取模块和组件名称。
模块名称必须是有效的nodejs包名称,组件名称必须是有效的类名称(我已经使用此RegExp覆盖了有效的类名:/ ^ @?[a-z_A-Z] \ w +( ?:@ [A-z_A-Z] \ W +)* $ /)
?。我需要的是一种识别字符串属于其中一个组(url,local或none)的方法,如果是local,则提取模块和组件名称。最适合正则表达式解决方案...
由于
答案 0 :(得分:1)
这可以吗? See on regex101
^:.+-.+:.+\..+\..+|^:.+-.+|^.+\..+\..+|^http[s]?:\/\/.+
它匹配:x-x
,x.x.x
,:x-x:x.x.x
,http[s]://x
,x是在1和无限次之间重复的任何字符。如果前面有东西,它将不匹配任何。但它会匹配com.class.class.class.class
和http://invalidUrl
。如你所说,检查班级名称是否良好。如果您只想要有效的网址,则可以将^http[s]?:\/\/.+
替换为https?:\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?
或任何正则表达式验证网址。 (我没有发明这个)
答案 1 :(得分:0)
通过使用Croutonix引用的神奇Web工具,我能够生成RegExp并进行实时测试:
解决方法是/^ :( [〕〕[az] - )$ / gm.exec(字符串)