$gi = filter_var(filter_var($_POST['group_id'], FILTER_SANITIZE_STRING),
FILTER_VALIDATE_REGEXP, array(
"options"=>array("regexp"=>"/^[a-zA-Z0-9_](?=[^\s]+$).{5,20}$/")));
그것은 내가 사용하고있는 코드입니다. 이것은 PHP & MySQL 응용 프로그램입니다. 문제는 5 문자 이하의 값으로 FALSE를 반환한다는 것입니다. '5'를 '6'으로 변경하면 6 자 이하의 문자는 FALSE를 반환합니다. 왜 이런거야?RegExp가 적절한 문자 수로 false를 반환하는 이유는 무엇입니까?
또한, 다음 코드는 동일하게 동작 :
$gi = filter_var($_POST['group_id'], FILTER_VALIDATE_REGEXP,
array("options"=>array(
"regexp"=>"/^[a-zA-Z0-9_](?=[^\s]+$).{5,20}$/")));
내 정규 표현식이 1 인 인상을 해요) 문자, 숫자 및 밑줄로 항목을 제한, 2) 공백을 금지하고, 3) 최소 5 자 이상이어야하며 최대 20자를 설정해야합니다.
부정 연산자'^'는 부정 연산자입니까? AFAIK'^ \ w'는'\ W'와 같습니다. – Machinarius
최소 길이는 7이 아닌 6입니다. '(? = [^ \ s] + $)'는 미리보기이기 때문에 문자를 소비하지 않습니다. –
고마워, Brad. 내가 해결할 수 없었던 한 가지 더 작은 질문. 특정 단어를 금지하려면 해당 정규 표현식을 어떻게 수정합니까? 예. 쿼티, 또는 모독들? – David