我需要一些正则表达式的帮助。如何从一开始就使正则表达式匹配模式?
我正在从JavaScript以下为“面具”可使用以下规则组成的所有特殊的URL:
他们可以像这样的东西
0>
或1223>
或1_23>
开始
他们可能有协议,前开始:
http:\\
或https:\\
它们也有可能
www.
子域
因此,例如,对于https://www.example.com
应该产生https://www. ...
。
于是我想出了以下JS:
var url = "0>https://www.example.com/plugins/page.php?href=https://forum.example.com/topic/some_topic";
m = url.match(/\b((?:[\d_]+>)?.+\:\/\/(?:www.)?)/i);
if (m) {
url = m[1] + " ...";
}
console.log(url);
它适用于大多数情况下,除了“重复”的网址在我的例子,在这种情况下,我得到这个:
0 >https://www.example.com/plugins/page.php?href=https:// ......
当我期待:
0> https:// www。 ...
如何让它从一开始就选择匹配?我以为加入\b
会做到这一点...
使用非贪婪操作''像这样'\ B((?:?[\ d _] +>)+ \:??\/\ /(?: www。)?)' – 2014-10-18 02:59:57
@alphabravo:刚刚错过了一个问号,呵呵;)谢谢。 – c00000fd 2014-10-18 03:04:38