Javascript 2如何重复正则表达式的一部分和字符串的其余部分

Javascript 2如何重复正则表达式的一部分和字符串的其余部分,javascript,regex,Javascript,Regex,我想把这根线配上 domain1.com、domain2.com、domain3.com####someString 所以我需要一个匹配所有3个域和#someString的正则表达式。 我已经找到了验证url的模式,所以我想我也可以使用这个正则表达式来过滤域 /^(http|https):\/\/(([a-zA-Z0-9$\-_.+!*'(),;:&=]|%[0-9a-fA-F]{2})+@)?(((25[0-5]|2[0-4][0-9]|[0-1][0-9][0-9]|[1-9][0-

我想把这根线配上
domain1.com、domain2.com、domain3.com####someString

所以我需要一个匹配所有3个域和#someString的正则表达式。 我已经找到了验证url的模式,所以我想我也可以使用这个正则表达式来过滤域

/^(http|https):\/\/(([a-zA-Z0-9$\-_.+!*'(),;:&=]|%[0-9a-fA-F]{2})+@)?(((25[0-5]|2[0-4][0-9]|[0-1][0-9][0-9]|[1-9][0-9]|[0-9])(\.(25[0-5]|2[0-4][0-9]|[0-1][0-9][0-9]|[1-9][0-9]|[0-9])){3})|localhost|([a-zA-Z0-9\-\u00C0-\u017F]+\.)+([a-zA-Z]{2,}))(:[0-9]+)?(\/(([a-zA-Z0-9$\-_.+!*'(),;:@&=]|%[0-9a-fA-F]{2})*(\/([a-zA-Z0-9$\-_.+!*'(),;:@&=]|%[0-9a-fA-F]{2})*)*)?(\?([a-zA-Z0-9$\-_.+!*'(),;:@&=\/?]|%[0-9a-fA-F]{2})*)?(\#([a-zA-Z0-9$\-_.+!*'(),;:@&=\/?]|%[0-9a-fA-F]{2})*)?)?$/
我将其更改为此,因此不需要http(s)://,在域名之前永远不会有协议:

/^(([a-zA-Z0-9$\-_.+!*'(),;:&=]|%[0-9a-fA-F]{2})+@)?(((25[0-5]|2[0-4][0-9]|[0-1][0-9][0-9]|[1-9][0-9]|[0-9])(\.(25[0-5]|2[0-4][0-9]|[0-1][0-9][0-9]|[1-9][0-9]|[0-9])){3})|localhost|([a-zA-Z0-9\-\u00C0-\u017F]+\.)+([a-zA-Z]{2,}))(:[0-9]+)?(\/(([a-zA-Z0-9$\-_.+!*'(),;:@&=]|%[0-9a-fA-F]{2})*(\/([a-zA-Z0-9$\-_.+!*'(),;:@&=]|%[0-9a-fA-F]{2})*)*)?(\?([a-zA-Z0-9$\-_.+!*'(),;:@&=\/?]|%[0-9a-fA-F]{2})*)?(\#([a-zA-Z0-9$\-_.+!*'(),;:@&=\/?]|%[0-9a-fA-F]{2})*)?)?$/
但当然,这只会匹配一个域,仅此而已。 不幸的是,我没有足够的知识重复这个模式,所以它将匹配我的字符串。 我希望有以下输出:

match1:
    domain1.com
    domain2.com
    domain3.com

match2:
     #someString

我只使用Javascript。

您可以删除锚定
^
/
$
,以便在更大的字符串中找到匹配项,并添加子模式以匹配
,后跟一个或多个字母数字
\w+

(([a-zA-Z0-9$\-_.+!*'(),;:&=]|%[0-9a-fA-F]{2})+@)?(((25[0-5]|2[0-4][0-9]|[0-1][0-9][0-9]|[1-9][0-9]|[0-9])(\.(25[0-5]|2[0-4][0-9]|[0-1][0-9][0-9]|[1-9][0-9]|[0-9])){3})|localhost|([a-zA-Z0-9\-\u00C0-\u017F]+\.)+([a-zA-Z]{2,}))(:[0-9]+)?(\/(([a-zA-Z0-9$\-_.+!*'(),;:@&=]|%[0-9a-fA-F]{2})*(\/([a-zA-Z0-9$\-_.+!*'(),;:@&=]|%[0-9a-fA-F]{2})*)*)?(\?([a-zA-Z0-9$\-_.+!*'(),;:@&=\/?]|%[0-9a-fA-F]{2})*)?(\#([a-zA-Z0-9$\-_.+!*'(),;:@&=\/?]|%[0-9a-fA-F]{2})*)?)?|#\w+

JS代码段:

(a-a-zA-zA-zA-Z0-Z0-0-9-0-0-1-9[1-9[0-9][0-9[0-9[0-9-9[0-9-9[0-9-9-0-1-9[0-9-9[0-9-9-0-9-9][0-9[0-9[0-5-9-7-F-fA-F]{{{{2}{2}{2}2}},+);;(((((((((5[5[5[0-5[0-5[0-5[0-5-5-5-5-5-0-5-5-5-5-5-0-5[0-0-0-0-0-5-5五五五[0-0-5五五[0-0-5]0-5[0-0-5五五五五[0-5]([a-zA-Z0-9\-\u00C0-\u017F]+\)+([a-zA-Z]{2,})(:[0-9]+)(\/([a-zA-Z0-9$\-\-\.+*(),;:@&=]%[0-9a-fA-F]{2})*(\/([a-zA-Z0-9+=!*(),;:&]%[0-9a-fA-F]{2} )*)*)?(\?([a-zA-Z0-9$\-+!*”(),::&=\/?]%[0-9a-fA-F]{2})*)?(\([a-zA-Z0-9$\-+!*”(),::&=\/?]%[0-9a-fA-F]{2})*)?)?(\([a-zA Z0 Z0-9$\-+!*”,;::&===/?%[0-9a-fA-F]{; var str='domain1.com、domain2.com、domain3.com###someString'; var res=str.match(re) document.getElementById(“r”).innerHTML=JSON.stringify(res);
试试
^(https?:\/\/)?
https将永远不会在域中,这就是我删除它的原因。比如,也许。谢谢,你能解释一下你的想法吗changed@FIA2008我补充了一些必要的解释。很高兴对你有帮助。如果我的答案对你有帮助的话,请考虑一下投票。