you can use ecRecover
function in [email protected]
web3.eth.personal.ecRecover(dataThatWasSigned, signature [, callback])
Example
web3.eth.personal.ecRecover("Hello world", "0x30755ed65396facf86c53e6217c52b4daebe72aa4941d89635409de4c9c7f9466d4e9aaec7977f05e923889b33c0d0dd27d7226b6e6f56ce737465c5cfd04be400").then(console.log);
"0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe"
Or you can use ethereumjs-utils
library function ecrecover
Edit
You can use this to recover public address
const publicKey = util.ecrecover(util.sha3('test'), sig.v, sig.r, sig.s);
const address = util.pubToAddress(publicKey).toString('hex');