Al igual que el título, tengo un problema con el siguiente código
function checkPhone(phone){ var reg = "/^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/im"; var result=phone.match(reg); if (result) { console.log("(true)phone "+phone); return (true) } else { console.log("(error)phone "+phone); } } <div class="form-group"> <label >Numero di Telefono</label><br> <input type="text" id="phone" onchange="checkPhone(this.value)" placeholder="Insert phone number"> </div> Independientemente de lo que intente poner en phone , dará como resultado "(error)phone "+phone . También lo he probado en línea y funciona.
¿Cómo puedo solucionar el problema?
El problema es que tiene comillas alrededor de la expresión regular. Prueba esto:
function checkPhone(phone){ var reg = /^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/im; var result=phone.match(reg); if (result) { console.log("(true)phone "+phone); return (true) } else { console.log("(error)phone "+phone); } } <div class="form-group"> <label >Numero di Telefono</label><br> <input type="text" id="phone" onchange="checkPhone(this.value)" placeholder="Insert phone number"> </div>Consulte Expresiones regulares en MDN .