2013-07-12 90 views
0

到str.match()在做的...額外字符添加在JavaScript

var URLPattern = '^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?'; 
alert(str.match(URLPattern)); 

它將正確匹配的URL,但然後追加

,ht,,m,,,, 

到url

結束

我能做些什麼來解決這個問題?

+1

使用[非捕獲基(http://www.regular-expressions.info/refadv.html)。 –

回答

0

看看.match返回什麼:由匹配和匹配的capturing groups組成的數組。

使用

var result = str.match(URLPattern); 
alert(result != null ? result[0] : "nothing found"); 

順便說一句,你的正則表達式是正確構造。使用regex literal而不是字符串常量該吃你的反斜線:

var URLPattern = /^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?/; 
+0

現在可行!謝謝! – Michael