我有以下用于电话号码验证的正则表达式

function validatePhonenumber(phoneNum) {
    var regex = /^[1-9]{3}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}$/;
    return regex.test(phoneNum);
}


但是,我很乐意确保它不会通过;例如
111-222.3333

有什么想法如何确保分隔符始终相同?

最佳答案

只需事先确保最多有一种分隔符,然后按照您的操作将字符串传递给正则表达式即可。

function validatePhonenumber(phoneNum) {
    var separators = extractSeparators(phoneNum);
    if(separators.length > 1) return false;

    var regex = /^[1-9]{3}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{3}$/;
    return regex.test(phoneNum);
}

function extractSeparators(str){
    // Return an array with all the distinct chars
    // that are present in the passed string
    // and are not numeric (0-9)
}

09-17 15:37