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

标签 javascript regex node.js extract

我需要能够识别字符串是否与以下模式匹配:

':模块名称' || 'com.example.ClassName' || ':模块名称:com.example.ClassName' || 'http://url ';

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

模块名称必须是有效的nodejs包名称,组件名称必须是有效的类名称(我得到的有效类名称已被此正则表达式覆盖:/^@?[a-z_A-Z]\w+(?:.@?[a-z_A-Z]\w+)*$/)。

我需要的是一种方法来识别字符串属于哪个组(url、本地或无),如果是本地,则提取模块和组件名称。正则表达式解决方案的最佳选择...

谢谢

最佳答案

这能行吗? 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#!:.?+=&%@!\-\/]))? 或任何验证 url 的正则表达式。 (这个不是我发明的)

关于javascript - 从字符串中匹配和提取信息的特定模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40565856/

相关文章:

javascript - 有没有办法保存以前的 html 页面并在重新加载时将其加载到当前页面?

javascript - 访问 Handlebars 模板内的数据属性值

PHP/jQuery/Javascript - 变量中仅允许数字和某些字符

java - 如何匹配复杂的字符串?

json - Node : saving JSON to MongoDB

javascript - Sails.JS - NTLM 身份验证失败时重试?

javascript - Angular ui-bootstrap 下拉菜单始终初始打开

mysql - MySQL 的 SED 等效项

javascript - 在 ApostropeCMS 中编辑时添加只读字段

javascript - 使用 Restangular 请求从 REST API 下载文件