需要帮助将一段代码从PHP转换为Javascript

时间:2011-08-19 14:06:53

标签: php javascript

下面是我开始使用的代码片段...然后我根据stackoverflow用户的评论建议进行了一些更改。 (到目前为止,请参阅下面的进展)

ORIGINAL

$valid = true;

    // basic validation
    $phoneNumber = str_replace( ' ', '', $phoneNumber );
    if ( strlen( $phoneNumber ) < 10 || !is_numeric( $phoneNumber ) ) {
        $valid = false;
    }

    $areaCode  = substr($phoneNumber, 0, 3);
    $prefix    = substr($phoneNumber, 3, 3);
    $mainPhone = substr($phoneNumber, 3, 7);

    // perform the same regex matching:
    if ($valid) {
        $regex = '/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))/';
        $valid = preg_match($regex, $areaCode);
    }
    if ($valid) {
        $regex = '/^(?!\d[1]{2}|[5]{3})([2-9]\d{2})([. -]*)\d{4}$/';
        $valid = preg_match($regex, $mainPhone);
    }

    // perform the original web validation:
    if ( $valid ) {
        // validate area code
        if ( 
             $areaCode == '000' ||
             $areaCode == '111' ||
             $areaCode == '222' ||
             $areaCode == '333' ||
             $areaCode == '444' ||
             $areaCode == '555' ||
             $areaCode == '666' ||
             $areaCode == '777' ||
             $areaCode == '999' ||
             $areaCode == '123' || (is_string($areaCode) && !is_numeric($areaCode))) {
            $valid = false;
        }
    }

    if ( $valid ) {
        // validate prefix
        if ( $prefix == '123' ||
             $prefix == '000' ||
             $prefix == '111' ||
             $prefix == '555' || (is_string($prefix) && !is_numeric($prefix))) {
            $valid = false;
        }
    }

    if ( $valid ) {
        // validate main phone number

        if ( $mainPhone == '2222222' ||
             $mainPhone == '3333333' ||
             $mainPhone == '4444444' ||
             $mainPhone == '6666666' ||
             $mainPhone == '7777777' ||
             $mainPhone == '8888888' ||
             $mainPhone == '9999999' || (is_string($phoneNumber) && !is_numeric($phoneNumber))) {
            $valid = false;
        }
    }

    return $valid;

NEW JAVASCRIPT VERSION(SO FAR)

下面是我正在转换的代码片段...我还有一些PHP内容你们可以帮助我删除/替换这段代码需要说的内容才能使它工作吗?

function is_numeric(n) {
        return !isNaN(parseFloat(n)) && isFinite(n);
    }

function phonenumberIsValid(phonenumber)
{

var valid = true;

    // basic validation
    var phonetest = phonenumber.replace(' ','');
    if ( strlen( phonetest ) < 10 || !is_numeric( phonetest ) ) {
       valid = false;
    }

    var areaCode  = phonetest.substr(0,3);
    var prefix    = phonetest.substr(3,3);
    var mainPhone = phonetest.substr(3,7);


    // perform the same regex matching that LeadMaster does:
    if(valid){
        valid = areaCode.match('/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))/');
    }

    if(valid){
        valid = mainPhone.match('/^(?!\d[1]{2}|[5]{3})([2-9]\d{2})([. -]*)\d{4}$/');
    }

    // perform the original web validation:
    if(valid){
        // validate area code
        if ( 
             areaCode == '000' ||
             areaCode == '111' ||
             areaCode == '222' ||
             areaCode == '333' ||
             areaCode == '444' ||
             areaCode == '555' ||
             areaCode == '666' ||
             areaCode == '777' ||
             areaCode == '999' ||
             areaCode == '123' || (!is_numeric(areaCode)) {
             valid = false;
        }
    }

    if(valid) {
        // validate prefix
        if ( prefix == '123' ||
             prefix == '000' ||
             prefix == '111' ||
             prefix == '555' || (!is_numeric(prefix)) {
             valid = false;
        }
    }

    if(valid) {
        // validate main phone number

        if ( mainPhone == '2222222' ||
             mainPhone == '3333333' ||
             mainPhone == '4444444' ||
             mainPhone == '6666666' ||
             mainPhone == '7777777' ||
             mainPhone == '8888888' ||
             mainPhone == '9999999' || (!is_numeric(phoneNumber)) {
             valid = false;
        }
    }

    return valid;

}

1 个答案:

答案 0 :(得分:2)

PregMatch可以替换为“myString”。匹配,例如。

if ($valid) {
    $regex = '/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))/';
    $valid = preg_match($regex, $areaCode);
}

会变成

if(valid){
  valid = areaCode.match('/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))/');
}

str_replace("search","replace",$myString) 

成为

myString.replace("search","replace") 

事实上,大部分内容都可以通过在google中键入“str_replace javascript”等内容并查找之前的堆栈溢出答案来解决:)