Javascript 正则表达式:Don';如果匹配在URL中,则不匹配

Javascript 正则表达式:Don';如果匹配在URL中,则不匹配,javascript,regex,Javascript,Regex,我正在尝试匹配描述中的所有hashtag。然而,URL有时会出现在描述中,URL有时会包含标签符号 使用regex,如果hashtag是URL的一部分,如何避免选择它们 此外,如果标签以数字开头,我想忽略它,因为它很可能不是标签,而是列表项 这是我的: 它基本上不起作用,它错误地匹配了#1,http://example.com/#urlpart和https://example.com#urlpart?s=searchJavaScript解决方案: 匹配URL,并使用匹配和捕获满足您需求的hash

我正在尝试匹配描述中的所有hashtag。然而,URL有时会出现在描述中,URL有时会包含标签符号

使用regex,如果hashtag是URL的一部分,如何避免选择它们

此外,如果标签以数字开头,我想忽略它,因为它很可能不是标签,而是列表项

这是我的:


它基本上不起作用,它错误地匹配了
#1
http://example.com/#urlpart
https://example.com#urlpart?s=search

JavaScript解决方案:

匹配URL,并使用匹配和捕获满足您需求的hashtag

/https?:\/\/\S+|(#(?!\d)[^\s#]+)/ig
JS提取演示:


const s=“regular text\n\n#1 0:33-很酷的事情您可以将组转过来并捕获您想要保留的内容。然后使用数字或空白字符以外的任何字符开始匹配

该值位于捕获组1中

\bhttps?:\/\/\S+|(#[^\s\d#][^\s#]*)
解释

  • \bhtps?:\/\/\S+
    匹配url
  • |
  • Capturegroup 1
    • #[^\s\d#]
      匹配
      #
      ,后跟除
      #
      之外的任何字符,一个数字或空白字符
    • [^\s#]*
      匹配除
      #
      或空白字符以外的任何字符的0+倍
  • 关闭第1组

const regex=/\bhttps?:\/\/\S+|(#[^\S\d\\\][^\S\\]*)/gm;
const str=`常规文本

#1 0:33-尝试使用
text.match(/https?:\/\/\S+(*SKIP)(*F)|#(?!\d)[^\S#]+/gm)很酷
在javascript中抛出错误
VM2176:1未捕获的语法错误:无效正则表达式:无需重复
@Nostupidquestions这是javascript。我的模式将与PCRE一起使用。我添加了一个javascript解决方案。@Nostupidquestions我在答案中添加了一个链接JS代码段。好的,我看到你在javascript中使用它,你知道吗从一开始就应该提到。现在,你在做什么?提取?替换(用一些标签包装)?拆分?
\bhttps?:\/\/\S+|(#[^\s\d#][^\s#]*)