저는 정규 표현식에서 그런 아마추어입니다.이 정규 표현식에서 공백 (얼마나 많은지는 중요하지 않습니다)을 어떻게 허용합니까? 내가 하이픈 전에 공간을 넣어어떻게이 정규식에서 공백을 허용합니까?
if(preg_match('/[^A-Za-z0-9_-]/', $str)) return FALSE;
저는 정규 표현식에서 그런 아마추어입니다.이 정규 표현식에서 공백 (얼마나 많은지는 중요하지 않습니다)을 어떻게 허용합니까? 내가 하이픈 전에 공간을 넣어어떻게이 정규식에서 공백을 허용합니까?
if(preg_match('/[^A-Za-z0-9_-]/', $str)) return FALSE;
if(preg_match('/[^A-Za-z0-9_ -]/', $str)) return FALSE;
참고. 공백이 하이픈 다음에 오는 경우 밑줄에서 공백까지 문자 범위를 지정합니다. (. 또한 문제를 탈출 하이픈 앞에 백 슬래시를 넣어 evadable)
이것은 당신이 "수"가 무엇을 의미한다고 가정한다이다 :이 정규식은 문자열을 확인하는 데 사용하고있는 경우 일치되고있다 , 문자열은 (따라서 return FALSE
) 허용되지 않습니다. 따라서 무효화 된 문자 클래스 ([^...]
)의 문자는 실제로 이며 허용되는 문자는입니다. (이이 질문에 몇 가지 일반적인 혼란을 일으키는 것입니다.)
당신은 당신이 필요합니다 단지 공간을 허용해야하는 경우 '/ /'
당신이 어떤 공백 문자를 허용해야하는 경우 (공백, 탭, 줄 바꿈) - 사용 '/ \ S /'
그리고 당신은 당신의 패턴에 공백을 추가해야하는 경우 (공간을 무시하는 것을 의미) - 사용/[^ A-ZA-z0-9_ \ -]/
하지 않음 질문에 대한 답변이 많지만 checking regex expressions에 유용하다고 생각되는 사이트입니다. 또한 입력 필드에서 마우스를 가져 가면 표현의 각 부분이 무엇을 의미하는지 설명합니다.
이 '/[^A-Za-z0-9_-\s]/'
같은 일반 expretion의 \s
하면 공간
귀하의 질문이 명확하지를 의미한다. $str
에 A-Za-z0-9_-
이 아닌 문자가 있으면 정규 표현식이 그대로 사용됩니다. 공백은 이러한 문자 중 하나가 아니므로 정규식이 일치하고 전체 문은 FALSE
을 반환합니다. 이 경우
당신이 원하는 것을하지 않고, 당신이 $str
이 A-Za-z0-9_-
또는 공간에없는 모든 문자가있는 경우, 정규 표현식이 일치 할, 당신은 (A-Za-z0-9_ -
로 변경 밑줄 사이의 공간에주의 할 필요가 및 하이픈). 따라서 문자열에 A-Za-z0-9_ -
이 아닌 문자가 있으면 정규 표현식이 일치하고 명세서에 FALSE
이 반환됩니다. 문자열이 모두 A-Za-z0-9_ -
으로 구성되어 있으면 정규식이 일치하지 않아 처리가 다음 줄로 계속 진행됩니다.
편집 : 여기 예입니다 : 당신의 문자열, abc123def
경우 현재 정규 표현식이 일치하지 않습니다 그리고 당신은 FALSE
를 반환하지 않습니다. 문자열이 abc123 def
이면 정규식이 일치하고 문은 FALSE
을 반환합니다. 문자 클래스를 A-Za-z0-9_ -
으로 변경하면 abc123def
및 abc123 def
에 대해 정규 표현식이 일치하지 않으며 FALSE
을 반환하지 않습니다.
이제 수액을 허용합니다. – Mchl
정규식이 이미 공백을 허용합니다. – CanSpice
저는 이중 부정문 때문에 혼란 스럽다고 생각합니다.정규식에서 공백을 허용하거나 전체 조건에서 공백을 허용 하시겠습니까? –