欢迎来到Altaba的博客 2017年11月15日
有时候我们某些营销活动需要捕获用户输入的短信内容,内容中如果用户输入的某些链接,我们后台捕获通过运营商发送的时候是需要用新的配置好的链接(假设配置的链接长度都为22字)替换,导致营销者输入的链接和最后发送到用户手中的链接长度不一致,这时候前端提示营销者的短信字数就可能和实际消耗的短信字数不一致,
怎么办,前端这边必须精准提示实际将会发送的短信字数。 这下就需要前端对营销者写下的短信内容作筛选,如果包含链接,字数提醒就必须做改变,不再是一个字符算一个字,只要是链接统一算22字符
上代码:
function httpString(s) {
var reg = /(http:\/\/|https:\/\/)((\w|=|\?|\.|\/|&|-)+)/g;
//var reg = /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;
//var reg=/(http(s)?\:\/\/)?(www\.)?(\w+\:\d+)?(\/\w+)+\.(swf|gif|jpg|bmp|jpeg)/gi;
//var reg=/(http(s)?\:\/\/)?(www\.)?(\w+\:\d+)?(\/\w+)+\.(swf|gif|jpg|bmp|jpeg)/gi;
var reg= /(https?|http|ftp|file):\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]/g;
//var reg= /^((ht|f)tps?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?$/;
//v = v.replace(reg, "<a href='$1$2'>$1$2</a>"); //这里的reg就是上面的正则表达式
//s = s.replace(reg, "$1$2"); //这里的reg就是上面的正则表达式
s = s.match(reg);
console.log(s)
return(s)
}
返回的是一个数组,数组项是链接字符串,有一个链接就有一个数组项,有 两个就有两个,没有就返回null