Regex-Don';如果组以javascript中的字符串开头,则无法匹配该组

Regex-Don';如果组以javascript中的字符串开头,则无法匹配该组,javascript,regex,Javascript,Regex,我正在努力使用一些正则表达式,javascript中没有典型的lookback选项,只有在组前面没有字符串时才匹配它: (^|)(www\.[\S]+?(?= |[,;:!?]|\.( )|$)) 所以在下面 hello http:/www.mytestwebsite.com is awesome 我试图检测www.mytestwebsite.com是否被 &

我正在努力使用一些正则表达式,javascript中没有典型的lookback选项,只有在组前面没有字符串时才匹配它:

(^|)(www\.[\S]+?(?= |[,;:!?]|\.( )|$))
所以在下面

hello http:/www.mytestwebsite.com is awesome
我试图检测www.mytestwebsite.com是否被

/
如果是的话,我不想比赛,否则比赛就结束了。我尝试使用前瞻,但它看起来与我已经拥有的前瞻相冲突

我一直在不同的区域进行(?!/)放置,但没有成功

(^|)((?!&#x2f)www\.[\S]+?(?= |[,;:!?]|\.( )|$))
如果由于JS中缺少lookbehind而在前面进行了比赛,则前瞻性不匹配,这是实现目标的唯一方法
是匹配那些包含错误的
和#x2f也是

这是因为前瞻不会提升当前位置。
只有耗材文本上的匹配将提升该位置

但是,一个好的解决方法始终是将错误的文本作为一个选项来包含
在正则表达式中。您可以在它周围放置一些捕获组,然后测试
分组比赛。如果匹配,跳过,继续下一个匹配

这需要在一个while循环中检查每个成功的匹配。
在下面的正则表达式中,如果组1匹配,则不存储组2 url,
如果没有,则存储组2 url

(/;)?(www\.\S+?(?= ;|[,;:!?])。( ;)|$)

格式:

 ( &\#x2f; )?                  # (1)
 (                             # (2 start)
      www\. \S+? 
      (?=
           &\#x20;
        |  [,;:!?] 
        |  \.
           ( &\#x20; )                   # (3)
        |  $ 
      )
 )                             # (2 end)
另一个选项(我已经做了零性能测试)是使用
string.replace()
,使用正则表达式和回调作为第二个参数


然后,在replace函数内部,将不想匹配的非法/字符前置/追加到匹配的字符串中,使用传递给回调函数的offset参数(参见上面的文档),您可以确定每个匹配项及其位置,并确定是否替换文本。

您是否尝试了
(^ |和#x2f;|)(www\.[\s]+?(3)目前,((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()20)20)20)20)月20日)20日)除:))/code>/code>))),/code>/code>/code>/code>/code>/code>,在比赛中包含比赛中包括((((((((((((((((((((((35)X2)在比赛中)的)的)的)的)的)的)的)的)比赛中包含在比赛中的)中的)的)的)的)的)的)的)的)的)x2fl值。你在比赛中包含了比赛中的价值。你在比赛中的比赛中包含的价值。你的比赛中的$)
@jperezov那也不行。我认为[]括号正在对中的每个字符进行比较。我尝试了
(^ |&(/;)|)(www\.[\S]+(?=& ;|[,;:!?])中的每个字符(& ;)
,其中包括
和/;