먼저 두 개의 특수 문자인 '^'와 '$'를 살펴보겠습니다. 이들은 각각 문자열의 시작과 끝을 일치시키는 데 사용됩니다. 다음은 예입니다:
"^The": "The" String"
으로 시작하는 문자와 일치합니다
.of 절망$": "of 절망"으로 끝나는 문자열과 일치합니다.
"^abc$": abc로 시작하고 abc로 끝나는 문자열과 일치합니다. 실제로 abc만 일치합니다.
"notice": 통지가
포함된 문자열과 일치합니다.
우리가 언급한 두 문자(마지막 예)를 사용하지 않으면 패턴(정규 표현식)이 검사 중인 문자열의 어느 곳에나 나타날 수 있으며 이를 사용하지 않는다는 것을 알 수 있습니다.
또한 문자의 수나 발생 순서를 나타내는 데 사용되는 여러 문자 '*', '+' 및 '?'가 있습니다. 이들은 각각 "0개 이상", "1개 이상" 및 "1개 이상"을 나타냅니다.
"0
또는 1." 다음은 몇 가지 예입니다.
"ab*": a와 0개 이상의 b로 구성된 문자열과 일치합니다("a", "ab", "abbb" 등).
위에 있지만 적어도 하나의 b("ab", "abbb" 등)가 있습니다.
"ab?": 0 또는 하나와 일치합니다.
"a?b+$": 하나 또는 0과 일치합니다. b로 끝나는 문자열.
예를 들어 "ab{2}"와 같이 중괄호 안에 표시되는 문자 수를 제한할 수도 있습니다.
a와 두 개의 b(이하 없음)가 일치합니다("abb")
. ": 최소 두 개의 b("abb", "abbbb" 등);
"ab{3,5}": 2-5 b("abbb", "abbbb " 또는 "abbbbb").
또한 항상 지정해야 합니다(즉, "{,2}"가 아니라 "{0,2}"). 마찬가지로 '*', ' +' 및 '?'도 동일하다는 점에 유의해야 합니다. 세 가지 범위 주석(각각 "{0,}", "{1,}" 및 "{0,1}")을 따릅니다.
이제 특정 수의 문자를 괄호 안에 넣으세요. 예를 들어:
"a(bc)*": a 다음에 0 또는 1이 오는 "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"와 동일).
"[ad]": '의 단일 문자와 일치합니다. a'에서 'd'로("a│b│c│d" 및 "[abcd]"와 동일한 효과)
"^[a-zA-Z]": 문자열
"[0-9"
로 시작하는 문자와 일치합니다.]%": x% 를 포함하는 문자열과 일치합니다
. "[a-zA-Z0-9]$": 쉼표로 끝나고 그 뒤에 숫자나 문자가 오는 문자열과 일치합니다.
원하지 않는 문자를 대괄호 안에 넣을 수도 있습니다
.괄호의 시작 부분으로 '^'를 사용하면 됩니다(예: "%[^a-zA-Z]%"는 문자가 아닌 문자열 안에 2개의 퍼센트 기호와 일치합니다)
. 해석하지만 "^.[$()│*+?{"를 특별한 의미를 가진 문자로 사용할 경우에는 반드시 이 문자 앞에 ''를 추가해야 하며, php3에서는 시작 부분에 를 사용하지 않아야 합니다. 예를 들어, 정규 표현식 "($│?[0-9]+"는 ereg("( \$│?[0-9 ]+", $str) 로 호출되어야 합니다. php4에서도 같은지 확인하세요)
대괄호 안의 문자는 이 규칙의 예외라는 점을 잊지 마세요. 대괄호 안의 ('')를 포함한 모든 특수 문자는 특수 속성(즉, "[* +?{}.]"는 이러한 문자를 포함하는 문자열과 일치합니다. 또한 regx 매뉴얼에 나와 있듯이 "목록에 ']'가 포함되어 있으면 이를 목록의 첫 번째 문자로 사용하는 것이 가장 좋습니다. '^' 다음에 '-'가 포함된 경우 범위의 시작이나 끝 또는 두 번째 끝점에 넣는 것이 가장 좋습니다(예: [ad-0-9] 완전성
을 위해 조합 순서, 문자 클래스 및 동등 클래스를 다루어야 합니다. 그러나 이러한 측면에 대해서는 너무 자세히 설명하고 싶지 않으며 이에 대해서는 이 책에서 다룰 필요가 없습니다. 다음 기사에서 더 많은 정보를 찾을 수 있습니다.
통화 금액 입력과 일치하는 패턴을 작성하는 방법
이제 우리가 배운 내용을 사용하여 유용한 작업을 수행해 보겠습니다. 입력정보는 돈을 나타내는 숫자입니다. 금액을 나타내는 방법에는 "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})? $
이제 가독성을 위해 쉼표(3자리마다)를 추가하므로 다음과 같이 표현할 수 있습니다.
^[0-9]{1,3}( ,[ 0-9]{3})*(.[0-9]{1,2})?$
더하기 기호 '+'를 잊지 마세요. 이 경우 곱하기 기호 '*'로 대체할 수 있습니다. 빈 문자열을 입력할 수 있게 하려는 경우(이유는 무엇입니까?) 또한 백슬래시 ''가 PHP 문자열에서 오류를 일으킬 수 있다는 점을 잊지 마십시오(매우 일반적인 오류). 이제 문자열을 확인할 수 있으므로 모두 제거하겠습니다. commas str_replace(" ,", "", $money) 그런 다음 유형을 double로 처리하면 이를 통해 수학적 계산을 수행할 수 있습니다.
이메일 확인을 위한 정규식 구성
이메일 주소를 확인하는 방법에 대해 계속 논의하겠습니다. 이메일 주소는 세 부분으로 구성됩니다: POP3 사용자 이름( '@' 왼쪽에 있는 모든 항목), '@' , 서버 이름(나머지 부분) 사용자 이름에는 대문자와 소문자, 아라비아 숫자, 마침표('. '), 빼기('-') 및 밑줄('_'). 밑줄을 제외하고 서버 이름도 이 규칙을 따릅니다.
이제 사용자 이름은 마침표로 시작하거나 끝날 수 없습니다. 연속된 마침표 사이에는 최소한 하나의 문자가 있어야 합니다. 이제 사용자 이름에 대해 일치하는 패턴을 작성하는 방법을 살펴보겠습니다.
^[_a-zA-Z0-9-]+$
마침표의 존재는 다음과 같습니다. 아직 허용되지 않습니다. 추가:
^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*$
위의 의미는 다음과 같습니다. "적어도 하나의 표준 문자로 시작합니다. (.accidental 제외) 뒤에 점으로 시작하는 0개 이상의 문자열이 옵니다. "
단순화하기 위해 ereg() 대신 eregi()를 사용할 수 있습니다. eregi()는 대소문자를 구분하므로 지정할 필요가 없습니다. "az " 및 "AZ" 두 범위 - 하나만 지정하면 됩니다:
^[_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);
echo $regs[1];
고급 대체
ereg_replace() 및 eregi_replace()도 매우 유용합니다. 분리된 모든 음수 기호를 쉼표로 바꾸려면:
ereg_replace("[ nrt]+" , "," , 트림($str));