예제를 보고 정규 표현식을 배워보세요.
먼저 두 개의 특수 문자인 '^'와 '$'를 살펴보겠습니다. 이 문자는 각각 문자열의 시작과 끝을 일치시키는 데 사용됩니다.
먼저 두 개의 특수 문자인 '^'와 '$'를 살펴보겠습니다. 이는 각각 문자열의 시작과 끝을 일치시키는 데 사용됩니다. 예는 다음과 같습니다.
"^The": 시작과 일치합니다. "The" 문자열 사용;
"of 절망$": "of 절망"으로 끝나는 문자열과 일치합니다.
"^abc$": abc로 시작하고 abc로 끝나는 문자열과 일치합니다. 실제로는 abc입니다. 일치합니다.
"notice": 통지가 포함된 문자열과 일치합니다.
우리가 언급한 두 문자(마지막 예)를 사용하지 않으면 패턴(정규 표현식)이 가능하다는 것을 알 수 있습니다. 테스트 중인 문자열의 어느 곳에나 나타나며 양쪽에 고정되어 있지 않습니다.
문자의 수나 발생 순서를 나타내는 데 사용되는 여러 문자 '*', '' 및 '?'도 있습니다. 이들은 각각 "0개 이상", "1개 이상"을 나타냅니다. , "0 또는 1". 다음은 몇 가지 예입니다.
"ab*": a와 0개 이상의 b로 구성된 문자열과 일치합니다("a", "ab", "abbb" 등). 🎜>"ab ": 위와 동일하지만 하나 이상의 b("ab", "abbb" 등)가 있습니다.
"ab?": 0개 또는 하나의 b와 일치합니다.
" a?b; $": 하나 또는 0 a와 하나 이상의 b로 끝나는 문자열과 일치합니다.
"ab{2 }"와 같이 중괄호 안의 문자 수를 제한할 수도 있습니다. two b(이하 없음) ("abb");
"ab{2,}": 적어도 두 개의 b와 일치합니다("abb", "abbbb" 등).
"ab{3,5 }": 2-5 b("abbb", "abbbb" 또는 "abbbbb").
또한 항상 지정해야 합니다(예: "{,2가 아닌 "{0,2}"). }"). 마찬가지로 '*', ' ' 및 '?'는 다음 세 가지 범위 주석 "{0, }", "{1,}" 및 "{0, 1}".
이제 특정 수의 문자를 괄호 안에 넣으세요. 예:
"a(bc)*": a 뒤에 0 또는 하나의 "bc"가 옵니다.
"a(bc){1 ,5 }": 1~5개의 "bc".
OR 연산과 동일한 문자 '│'도 있습니다.
"hi│hello": "hi" 또는 "hello"가 포함된 문자열과 일치합니다.
"(b│cd)ef": "bef" 또는 "cdef"를 포함하는 문자열과 일치합니다.
"(a│b)*c": - 배수(0 포함) a 또는 b를 포함하는 문자열과 일치합니다. c 문자열
점('.')은 모든 단일 문자를 나타낼 수 있습니다.
"a.[0-9]": a 뒤에 문자와 숫자가 옵니다(이러한 문자열을 포함하는 문자열). 이 대괄호는 향후 생략됩니다.)
"^.{3}$": 세 문자로 끝납니다. 대괄호로 묶인 내용은 단일 문자
"[ab]"와만 일치합니다. : 단일 a 또는 b와 일치합니다("a│b"와 동일).
"[a-d]": 'a'에서 'd'까지 단일 문자와 일치합니다(및 "a│b│c│d" 및 "[abcd]"는 동일한 효과를 갖습니다);
"^[a-zA-Z]": 문자로 시작하는 문자열과 일치합니다.
"[0-9] %": x% ",[a-zA-Z0-9]$": 뒤에 숫자나 문자가 오는 쉼표로 끝나는 문자열과 일치합니다.
대괄호 안에 문자를 나열하지 않으려면 다음과 같이 입력하면 됩니다. 괄호의 시작 부분으로 '^'를 사용합니다(예: "%[^a-zA-Z]%"는 문자열 내부에 문자가 아닌 두 개의 퍼센트 기호와 일치합니다).
설명할 수 있도록, 하지만 "^.[$()│* ?{"를 특별한 의미를 지닌 문자로 사용하는 경우에는 이 문자 앞에 ''를 추가해야 하며, php3에서는 패턴 시작 부분에 사용을 피해야 합니다. 예를 들어, 정규식 "($│?[0-9] "는 ereg("($│?[0-9] ", $str)라고 호출해야 합니다(모르겠습니다. php4에서도 같은가요?)
대괄호 안의 문자는 이 규칙의 예외라는 점을 잊지 마세요. 대괄호 안의 ('')를 포함한 모든 특수 문자는 특수 속성을 잃게 됩니다(예: " [* ?{}.]"는 이러한 문자가 포함된 문자열과 일치함). 문자) 또한 regx 매뉴얼에 나와 있듯이 "목록에 ']'가 포함되어 있으면 이를 목록의 첫 번째 문자로 만드는 것이 가장 좋습니다('^'가 뒤따를 수도 있음). '-'가 포함되어 있으면 맨 앞이나 끝에 두는 것이 가장 좋으며, 범위의 두 번째 끝점(예: [a-d-0-9] 중간에 있는 '-'이 효과적입니다.
완전성을 기함) , 조합 순서, 문자 클래스 및 동등 클래스를 다루어야 하지만 이러한 측면에 대해 너무 자세히 설명하고 싶지 않으며 다음 기사에서 다룰 필요가 없습니다. Get에서 읽을 수 있습니다. 자세한 내용은 정규식 매뉴얼 페이지를 참조하세요.
통화 금액 입력과 일치하는 패턴을 작성하는 방법
자, 이제 배운 내용을 사용하여 유용한 작업을 수행해 보겠습니다. 입력을 확인하기 위해 일치 패턴을 작성해 보겠습니다. 정보는 돈을 나타내는 숫자입니다.금액을 나타내는 방법에는 "10000.00"과 "10,000.00", 또는 소수 부분이 없는 "10000"과 "10,000"의 네 가지 방법이 있다고 생각합니다. 이제 이 일치 패턴을 구축해 보겠습니다.
^[1- 9 ][0-9]*$
이는 모든 변수가 0이 아닌 숫자로 시작해야 함을 의미합니다. 그러나 이는 또한 단일 "0"이 테스트를 통과할 수 없음을 의미합니다.
^(0 │[1-9][0-9]*)$
"0과 0으로 시작하지 않는 숫자만 일치", 숫자 앞에 음수 기호를 허용할 수도 있습니다:
^(0│ -?[1-9][0-9]*)$
이것은 "0 또는 0으로 시작하고 앞에 음수 기호가 있을 수 있는 숫자입니다." 좋습니다. 이제 너무 엄격하지는 마세요. , 0으로 시작할 수 있습니다. 이제 동전을 나타낼 때 사용할 필요가 없으므로 음수 기호를 버리겠습니다. 이제 소수 부분과 일치하도록 패턴을 지정합니다.
^[0-9] (.[ 0- 9] )?$
이는 일치하는 문자열이 하나 이상의 아라비아 숫자로 시작해야 함을 의미합니다. 그러나 위 패턴에서는 "10"이 일치하지 않으며 "10"과 "10.2"만 허용됩니다. . (이유를 아시나요)
^[0-9] (.[0-9]{2})?$
생각해보면 소수점 이하 두 자리가 있어야 한다고 명시했습니다. 너무 가혹한 내용이므로 다음과 같이 변경할 수 있습니다.
^[0-9] (.[0-9]{1,2})?$
이제 소수점 이하 1~2자를 허용합니다. 가독성을 높이기 위해 성적인 쉼표(세 번째 숫자마다)를 추가합니다.
^[0-9]{1,3}(,[0-9]{3})*(.[0 -9]{1 ,2})?$
빈 문자열을 입력할 수 있도록 하려면 더하기 기호 ''를 곱하기 기호 '*'로 바꿀 수 있다는 점을 잊지 마세요(이유는 무엇입니까?). PHP 문자열에서 백슬래시 ''를 잊지 마십시오. 오류가 발생할 수 있습니다(매우 일반적인 오류). 이제 문자열을 확인할 수 있으므로 이제 모든 쉼표 str_replace(",", "", $money)를 제거하고 유형을 다음과 같이 처리합니다. 이를 통해 수학적 계산을 할 수 있습니다.
이메일 확인을 위한 정규식 구성
이메일 주소를 확인하는 방법은 계속해서 POP3 사용자 이름( '@'에는 왼쪽에 있는 모든 항목), '@', 서버 이름(나머지)이 포함됩니다. 사용자 이름에는 대문자 및 소문자, 아라비아 숫자, 마침표('.'), 빼기 기호('-') 및 밑줄('_')은 물론 밑줄을 제외하고도 이 규칙을 따릅니다.
이제 사용자 이름의 시작과 끝은 마침표를 사용할 수 없습니다. 문자 사이에 하나 이상의 문자가 포함된 두 개의 연속 마침표, 이제 사용자 이름에 대한 일치 패턴을 작성하는 방법을 살펴보겠습니다.
^[_a-zA-Z0-9-] $
마침표의 존재는 다음과 같습니다. 아직 허용되지 않습니다. 추가해 보겠습니다.
^[_a-zA-Z0-9-] (.[_a-zA-Z0-9-] )*$
위의 의미는 다음과 같습니다. "적어도 하나 이상으로 시작하세요. 표준 문자(. 우연 제외), 뒤에 점으로 시작하는 0개 이상의 문자열이 옵니다."
좀 단순화하기 위해 ereg() 대신 eregi()를 사용할 수 있습니다. eregi()는 대소문자를 구분하지 않으므로 "a-z" 및 "A-Z" 두 범위를 지정할 필요는 없습니다. 다음 중 하나만 지정하면 됩니다.
^[_a-z0-9-] (.[_a-z0-9-] )*$
뒤의 서버 이름도 마찬가지지만 밑줄을 제거해야 합니다.
^[a-z0-9-] (.[a-z0-9-] )*$
이제 완료되었습니다. 두 부분을 연결하려면 "@"를 사용하면 됩니다.
^[_a-z0-9-] (.[_a-z0-9-] )*@[a-z0-9-] (.[ a-z0-9-] )*$
완료되었습니다. 이제 이메일 인증 일치 패턴을 사용할 수 있습니다.
eregi('^[_a-z0-9-] (.[_a-z0-9)를 호출하세요. -] )*@[a-z0-9-] (.[a -z0-9-] )*$ ',$eamil)
이메일인지 여부를 알 수 있습니다.
정규식의 다른 용도
문자열 추출
ereg() 및 eregi()에는 사용자가 정규식을 통해 문자열의 일부를 추출할 수 있는 기능이 있습니다(특정 사용법은 매뉴얼을 참조하세요). 예를 들어, 경로/URL에서 파일 이름을 추출하려고 합니다. 다음 코드가 필요합니다.
ereg("([^/]*)$", $pathOrUrl, $regs); [ 1];
고급 대체
ereg_replace() 및 eregi_replace()도 매우 유용합니다. 분리된 모든 음수 기호를 쉼표로 바꾸려면 다음을 사용하세요.
ereg_replace("[ ] ", " ,", 트림($str));
이상은 내용을 포함하여 예제를 보면서 PHP에서 정규식을 배우는 방법을 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.