匹配和从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]?:\/\/.+
它匹配:xx
, xxx
, :xx:xxx
, http[s]://x
,x是在1和无限次之间重复的任何字符。 如果前面有某些东西,它们将不匹配。 但它会匹配com.class.class.class.class
和http://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(串)