Problema ao enviar email do funcionario

Olá estou com problema ao enviar o email do funcionara, eu criei um campoEmail = new JTextField(); e essa configuração do botao ao ser acionado novoFuncionario.setEmail(campoEmail.getText()); e aqui é onde estou validando a informação do campo email

Boolean emailValidado = false;
	String ePattern = "^[a-zA-Z0-9.!#$%&'*+/=?^_¨{|}~-]+@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9)+\\.)+[a-zA-Z]{2,}))S";
	Pattern p = Pattern.compile(ePattern);
	Matcher m = p.matcher(campoEmail.getText());
	emailValidado = m.matches();

	if(!emailValidado) {
		JOptionPane.showMessageDialog(null, "Por favor, preencha o email corretamente.");
		return;
	}

e aqui é a instrução sql instrucaoSQL.setString(4, novoFuncionario.getEmail());

só q quando eu aperto o botão de enviar ele da a seguinte mensagem de erro no console. Exception in thread “AWT-EventQueue-0” java.util.regex.PatternSyntaxException: Unclosed character class near index 122
^[a-zA-Z0-9.!#$%&’*+/=?^_¨{|}~-]+@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9)+.)+[a-zA-Z]{2,}))S

se alguém poder me ajudar agradeço…

Faltou fechar os colchetes, é só colocar um ] depois do 9.

E no final tem um ) a mais. E a regex termina com a letra “S”, tem certeza que é isso mesmo? Talvez devesse ser o marcador $, que indica o final da string.

Ficaria assim:

String ePattern = "^[a-zA-Z0-9.!#$%&'*+/=?^_¨{|}~-]+@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9])+\\.)+[a-zA-Z]{2,})$";

Por fim, sobre o uso de regex para validar emails, tem algumas coisas aqui, aqui, aqui e aqui (este último link tem algumas opções no final, só não recomendo a última regex).