Javascript 正则表达式:Don';如果匹配在URL中,则不匹配
我正在尝试匹配描述中的所有hashtag。然而,URL有时会出现在描述中,URL有时会包含标签符号 使用regex,如果hashtag是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
它基本上不起作用,它错误地匹配了
#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#]*)