例如:str = ' 192.168.12. 254:18081 '
1. 用 ip和port 的正则
let ip_reg = /([\d\.]*)/gi;
let ip =ip_reg.exec( str );
ip=ip[0]
let port_reg =/.+:(\d{1,5})/
let port =str.match(port_reg);
port= port[1]
2. 一步到位
let ipPort=str.match(ip_reg)
ip=ipPort[ 0 ];
port=ipPort[ 2 ];
1)match
match方法属于String正则表达方法.
match的用法主要区分就是,正则表达式是否有全局标示g.
1)如果有g全局标志,那么返回的数组保存的是,所有匹配的内容,不包过子匹配。
2)如果没有g全局标志,那么返回的数组arr.arr[0]保存的是完整的匹配.arr[1]保存的是第一个括号里捕获的字串,依此类推arr[n]保存的是第n个括号捕获的内容.也就是当包含有全局的标志时则返回的结果第一个是正确匹配的结果,后面依次是子匹配的结果。
2)exec
与match方法不同exec属于正则表达式的方法.
exec与match的关联就是exec(g有没有都无影响)就等价于不含有g全局标志的match.即返回数组arr[0]为匹配的完整串.其余的为括号里捕获的字符串(当含有子匹配时).