我在使用正则表达式获取URL的大小时遇到了麻烦。我可以打印“exp”内容但是当我尝试发出exp.length警告时它会失败:
var pattern = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
var exp = text.match(pattern);
alert(exp.length);
有什么想法吗? 感谢。
答案 0 :(得分:0)
string.match返回一个数组,而不是一个字符串,你可能会尝试这样做:
var pattern = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
var exp = text.match(pattern);
alert(exp.join('').length); // alert a string, not an array
答案 1 :(得分:0)
如果,你要做的是获得正则表达式匹配结果的长度,你会这样做:
var pattern = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
var exp = text.match(pattern);
if (exp) {
alert(exp[0].length);
}
.match()
返回null(如果未找到匹配项)或数组。在该数组中,exp [0]将是找到的整个匹配。数组中的后续索引包含您匹配的任何子表达式(在匹配字符串中用括号表示)。