2017-02-16 1 views
0

다음 정규식 if 문이 작동하지 않는 것 같습니다. 나는 사용자가 2 ~ 3 글자 사이에서 7 ~ ​​11 글자 사이에 입력하도록하고 싶다. 그렇지 않으면 오류 메시지를 리턴하십시오.정규식이 참인 경우에만 양식의 유효성을 검사 할 수 있습니다.

add_filter('gform_field_validation_1_44', 'tax_id_verif', 10, 4); 
    function tax_id_verif ($result, $value, $form, $field) 
    {$tax_regex = "/^[a-zA-Z]{2,3}\s?+[1-9]{7,12}$/g"; 
    $tax_match = preg_match($tax_regex, $value, $match); 
    if ($result != $tax_match) { 
    $result['is_valid'] = false; 
    $result['message'] = 'Please enter a correct tax ID'; 
    } 
    return $result; 
    } 
+1

'g'한정자는 지원되지 않습니다. 또한,'\ s? +'는 1 또는 0의 공백 문자와 일치합니다. 아마도'\ s *'만 필요할 것입니다. 또한, [1-9]는 '1'에서 '9'까지의 숫자와 만 일치하며 '0'과 일치하지 않습니다. '$ tax_regex = "/^[a-zA-Z] {2,3} \ s * [0-9] {7,11} $ /"' –

+0

'[1-9]'는 0과 일치하지 않습니다. . 나는 당신이'[0-9]'를 의미한다고 생각합니다. –

+0

[1-9] {7,12}은 (0을 제외한) 7과 11 사이의 숫자와 일치합니다. '[0-9] {7,11} ' (btw, \ d는 [0-9]) – dquijada

답변

0

g 수정자는 PHP 정규 표현식에서 지원되지 않습니다. 또한 \s?+은 1 또는 0 공백과 일치합니다. 단지 \s* 만 사용할 수 있습니다. 또한 [1-9]1에서 9까지의 숫자 만 일치하므로 0과 일치하지 않습니다. 과 일치해야하는 경우 {7,11}이 아니라 {7,12}을 사용하십시오.

사용

$tax_regex = "/^[a-zA-Z]{2,3}\s*[0-9]{7,11}$/"; 

문자와 숫자 사이에는 공백이 없어야합니다 경우 \s*를 제거합니다.

관련 문제