匹配和从字符串中提取信息的特定模式

时间:2016-11-12 17:49:36

标签: javascript regex node.js extraction

如果符合以下模式,我需要能够识别字符串:

':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,则提取模块和组件名称。最适合正则表达式解决方案...

由于

2 个答案:

答案 0 :(得分:1)

这可以吗? See on regex101

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

它匹配:x-xx.x.x:x-x:x.x.xhttp[s]://x,x是在1和无限次之间重复的任何字符。如果前面有东西,它将不匹配任何。但它会匹配com.class.class.class.classhttp://invalidUrl。如你所说,检查班级名称是否良好。如果您只想要有效的网址,则可以将^http[s]?:\/\/.+替换为https?:\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?或任何正则表达式验证网址。 (我没有发明这个)

答案 1 :(得分:0)

通过使用Croutonix引用的神奇Web工具,我能够生成RegExp并进行实时测试:

解决方法是/^ :( [〕〕[az] - )$ / gm.exec(字符串)