在JavaScript中添加到str.match()的额外字符

时间:2013-07-12 12:11:01

标签: javascript regex string match

做一个......

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));

它会正确匹配网址,但会附加

,ht,,m,,,,

到网址的末尾

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分: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\-\.\?\,\'\/\\\+&%\$#_]*)?/;