我需要一些正則表達式的幫助。如何從一開始就使正則表達式匹配模式?
我正在從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