백엔드 개발 PHP 튜토리얼 PHP正则表达式应用笔记

PHP正则表达式应用笔记

Jun 13, 2016 am 11:02 AM
pattern windows

PHP正则表达式使用笔记

?

PHP正则表达式使用详解

操作符 描述
??? \
转义符
??? (), (?:), (?=), []
圆括号和方括号

??? *, +, ?, {n}, {n,}, {n,m} 限定符
??? ^, $, \anymetacharacter
位置和顺序
??? | “
操作
???
全部符号解释
???
字符 描述
??? \
将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"'\n' 匹配一个换行符。序列 '\\' 匹配 "\" "\(" 则匹配 "("

??? ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' '\r' 之后的位置。

??? $ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' '\r' 之前的位置。

??? * 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"* 等价于{0,}

??? + 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"+ 等价于 {1,}

??? ? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" "does" 中的"do" ? 等价于 {0,1}

??? {n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o

??? {n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o'o{1,}' 等价于 'o+''o{0,}' 则等价于 'o*'

??? {n,m} m n 均为非负整数,其中n 。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。

??? ? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo"'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'

??? . 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。

??? (pattern) 匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0…$9 属性。要匹配圆括号字符,请使用 '\(' '\)'

??? (?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。

??? (?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。

??? (?!pattern) 负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始

??? x|y 匹配 x y。例如,'z|food' 能匹配 "z" "food"'(z|f)ood' 则匹配 "zood" "food"

??? [xyz] 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'

??? [^xyz] 负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'

??? [a-z] 字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 'z' 范围内的任意小写字母字符。

??? [^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 'z' 范围内的任意字符。

??? \b 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'

??? \B 匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'

??? \cx 匹配由 x 指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z a-z 之一。否则,将 c 视为一个原义的 'c' 字符。

??? \d 匹配一个数字字符。等价于 [0-9]

??? \D 匹配一个非数字字符。等价于 [^0-9]

??? \f 匹配一个换页符。等价于 \x0c \cL

??? \n 匹配一个换行符。等价于 \x0a \cJ

??? \r 匹配一个回车符。等价于 \x0d \cM

??? \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]

??? \S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]

??? \t 匹配一个制表符。等价于 \x09 \cI

??? \v 匹配一个垂直制表符。等价于 \x0b \cK

??? \w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'

??? \W 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'

??? \xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,'\x41' 匹配 "A"'\x041' 则等价于 '\x04' & "1"。正则表达式中可以使用 ASCII 编码。.
??? \num
匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)\1' 匹配两个连续的相同字符。

??? \n 标识一个八进制转义值或一个向后引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为向后引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。

??? \nm 标识一个八进制转义值或一个向后引用。如果 \nm 之前至少有 nm 个获得子表达式,则 nm 为向后引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足,若 n m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm

??? \nml 如果 n 为八进制数字 (0-3),且 m l 均为八进制数字 (0-7),则匹配八进制转义值 nml

??? \un 匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, \u00A9 匹配版权符号 (?)

??? VBScript内的使用正则表达式的方法:

??? function gfCheck(obj)

??? dim strCheck '待检字符串
??? dim objRE '
正则式对象
??? dim strRtn '
正则式判断结果
??? strCheck = obj.value
??? set objRE = New RegExp
??? objRE.Pattern = "^[A-Za-z0-9]{13}$" '13
位的英文字符和数字串
??? gfCheck = objRE.Test(strCheck) '
符合正则式则返回true,反之则返回false
??? set objRE = nothing
??? end function
???
常用的正则表达式
??? 1
、非负整数:”^\d+$”

??? 2、正整数:”^[0-9]*[1-9][0-9]*$”

??? 3、非正整数:”^((-\d+)|(0+))$”

??? 4、负整数:”^-[0-9]*[1-9][0-9]*$”

??? 5、整数:”^-?\d+$”

??? 6、非负浮点数:”^\d+(\.\d+)?$”

??? 7、正浮点数:”^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$”

??? 8、非正浮点数:”^((-\d+\.\d+)?)|(0+(\.0+)?))$”

??? 9、负浮点数:”^(-((正浮点数正则式)))$”

??? 10、英文字符串”^[A-Za-z]+$”

??? 11、英文大写串”^[A-Z]+$”

??? 12、英文小写串”^[a-z]+$”

??? 13、英文字符数字串”^[A-Za-z0-9]+$”

??? 14、英数字加下划线串”^\w+$”

??? 15E-mail地址”^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$”

??? 16URL”^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$”

????17、空白行:\n\s*\r

?

一:匹配YYYY-MM-DD (([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)

2:匹配DD/MM/YYYY 或匹配D/M/YYYY

'/^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|'
??? ??? ??? ??? ??? ??? ??? ??? .'[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})\/((([13578]|1[2])|(0[13578]|1[02])'
??? ??? ??? ??? ??? ??? ??? ??? .'\/((0[1-9]|[12][0-9]|3[01])|([1-9]|[12][0-9]|3[1])))|(((0[469]|11)|([469]|11))'
??? ??? ??? ??? ??? ??? ??? ??? .'\/((0[1-9]|[12][0-9]|30)|([1-9]|[12][0-9]|30)))|'
??? ??? ??? ??? ??? ??? ??? ??? .'((02|2)\/((0[1-9]|[1][0-9]|2[0-8])|([1-9]|[1][0-9]|2[0-8]))'
??? ??? ??? ??? ??? ??? ??? ??? .')))|((([0-9]{2})((0[48]|[2468][048]|[13579][26])|([48]|[2468][048]|[13579][26]))|'
??? ??? ??? ??? ??? ??? ??? ??? .'((((0[48])|([48]))|[2468][048]|[3579][26])00))\/(02|2)\/29)$/';

?

3.验证全角

$strCheckPatten = “/^[^x00-xff]+$/”

$input = “全角

if(preg_match($strCheckPatten,$input) == 0){
??? ??? return false;
}
else{
??? ??? return true;
}

===============================================================================================

  1. JS中匹配中文正则表达式 [\u4e00-\u9fa5]
  2. JS中域名中间部分var patt = /^[a-zA-Z0-9\u4e00-\u9fa5]+(\-[a-zA-Z0-9\u4e00-\u9fa5]+)*$/i;

    url : var patt = /^([a-zA-z]+:\/\/)?([a-zA-Z0-9\u4e00-\u9fa5]+(\-[a-zA-Z0-9\u4e00-\u9fa5]+)*)(\.([a-zA-Z0-9\u4e00-\u9fa5]+(\-[a-zA-Z0-9\u4e00-\u9fa5]+)*))*(\?\S*)?$/i;

    1. php中utf-8编码下用正则表达式匹配汉字的最终正确表达式——/^[\x{4e00}-\x{9fa5}]+$/u
    2. php中GB2312编码下用正则表达式匹配汉字的最终正确表达式——
      ?"/^[".chr(0xa1)."-".chr(0xff)."]+$/"或者"/^[\xa1-\xff]+$/"或者"/^[\x{a1}-\x{ff}]+$/"?
    3. php中GB2312下匹配url

      $pattern =? ."/^([a-zA-z]+:\/\/)?"
      ?????."([a-zA-Z0-9".chr(0xa1)."-".chr(0xff)."]+(\-[a-zA-Z0-9".chr(0xa1)."-".chr(0xff)."]+)*)"
      ?????."(\.([a-zA-Z0-9".chr(0xa1)."-".chr(0xff)."]+(\-[a-zA-Z0-9".chr(0xa1)."-".chr(0xff)."]+)*))*"
      ?????."(\?\S*)?$/i";

      ? 4.PHP中正则表达式中或普通的“”中的字符串用 \ 进行转义,都是从左到右进行的

      如:echo “\\n”; 输出 "\n";?? echo "\\""会报错

      ?

      ?

      如有语言表达不当或错误之处,欢迎指正。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Windows 7에 MySQL을 설치할 수 있습니까? Windows 7에 MySQL을 설치할 수 있습니까? Apr 08, 2025 pm 03:21 PM

예, MySQL은 Windows 7에 설치 될 수 있으며 Microsoft는 Windows 7 지원을 중단했지만 MySQL은 여전히 ​​호환됩니다. 그러나 설치 프로세스 중에 다음 지점이 표시되어야합니다. Windows 용 MySQL 설치 프로그램을 다운로드하십시오. MySQL의 적절한 버전 (커뮤니티 또는 기업)을 선택하십시오. 설치 프로세스 중에 적절한 설치 디렉토리 및 문자를 선택하십시오. 루트 사용자 비밀번호를 설정하고 올바르게 유지하십시오. 테스트를 위해 데이터베이스에 연결하십시오. Windows 7의 호환성 및 보안 문제에 주목하고 지원되는 운영 체제로 업그레이드하는 것이 좋습니다.

MySQL을 해결하는 방법은 로컬 호스트에 연결할 수 없습니다 MySQL을 해결하는 방법은 로컬 호스트에 연결할 수 없습니다 Apr 08, 2025 pm 02:24 PM

MySQL 연결은 다음과 같은 이유로 인한 것일 수 있습니다. MySQL 서비스가 시작되지 않았고 방화벽이 연결을 가로 채고 포트 번호가 올바르지 않으며 사용자 이름 또는 비밀번호가 올바르지 않으며 My.cnf의 청취 주소가 부적절하게 구성되어 있습니다. 1. MySQL 서비스가 실행 중인지 확인합니다. 2. MySQL이 포트 3306을들을 수 있도록 방화벽 설정을 조정하십시오. 3. 포트 번호가 실제 포트 번호와 일치하는지 확인하십시오. 4. 사용자 이름과 암호가 올바른지 확인하십시오. 5. my.cnf의 바인드 아드 드레스 설정이 올바른지 확인하십시오.

다운로드 후 MySQL을 설치할 수 없습니다 다운로드 후 MySQL을 설치할 수 없습니다 Apr 08, 2025 am 11:24 AM

MySQL 설치 실패의 주된 이유는 다음과 같습니다. 1. 권한 문제, 관리자로 실행하거나 Sudo 명령을 사용해야합니다. 2. 종속성이 누락되었으며 관련 개발 패키지를 설치해야합니다. 3. 포트 충돌, 포트 3306을 차지하는 프로그램을 닫거나 구성 파일을 수정해야합니다. 4. 설치 패키지가 손상되어 무결성을 다운로드하여 확인해야합니다. 5. 환경 변수가 잘못 구성되었으며 운영 체제에 따라 환경 변수를 올바르게 구성해야합니다. 이러한 문제를 해결하고 각 단계를 신중하게 확인하여 MySQL을 성공적으로 설치하십시오.

터미널에서 MySQL에 액세스 할 수 없습니다 터미널에서 MySQL에 액세스 할 수 없습니다 Apr 08, 2025 pm 04:57 PM

터미널에서 MySQL에 액세스 할 수 없음 : MySQL 서비스가 실행되지 않음; 연결 명령 오류; 불충분 한 권한; 방화벽 블록 연결; MySQL 구성 파일 오류.

MySQL을 복사하여 붙여 넣는 방법 MySQL을 복사하여 붙여 넣는 방법 Apr 08, 2025 pm 07:18 PM

MySQL에서 복사 및 붙여 넣기 단계는 다음 단계가 포함됩니다. 데이터를 선택하고 CTRL C (Windows) 또는 CMD C (MAC)로 복사; 대상 위치를 마우스 오른쪽 버튼으로 클릭하고 페이스트를 선택하거나 Ctrl V (Windows) 또는 CMD V (Mac)를 사용하십시오. 복사 된 데이터는 대상 위치에 삽입되거나 기존 데이터를 교체합니다 (데이터가 이미 대상 위치에 존재하는지 여부에 따라).

특정 시스템 버전에서 MySQL이보고 한 오류에 대한 솔루션 특정 시스템 버전에서 MySQL이보고 한 오류에 대한 솔루션 Apr 08, 2025 am 11:54 AM

MySQL 설치 오류에 대한 솔루션은 다음과 같습니다. 1. MySQL 종속성 라이브러리 요구 사항이 충족되도록 시스템 환경을주의 깊게 확인하십시오. 다른 운영 체제 및 버전 요구 사항이 다릅니다. 2. 오류 메시지를주의 깊게 읽고 프롬프트 (예 : 라이브러리 파일 누락 또는 부족한 권한)에 따라 종속성 설치 또는 Sudo 명령 사용과 같은 해당 조치를 취합니다. 3. 필요한 경우 소스 코드를 설치하고 컴파일 로그를주의 깊게 확인하십시오. 그러나 일정량의 Linux 지식과 경험이 필요합니다. 궁극적으로 문제를 해결하는 핵심은 시스템 환경 및 오류 정보를 신중하게 확인하고 공식 문서를 참조하는 것입니다.

MySQL은 Windows에서 실행할 수 있습니다 MySQL은 Windows에서 실행할 수 있습니다 Apr 08, 2025 pm 01:54 PM

Windows에서 MySQL을 실행하는 것은 가능하지만 포트 충돌, 권한 문제 및 환경 변수 설정과 같은 문제를 고려해야합니다. 구성 파일을 사용자 정의하고 사용자 권한을 조정하며 환경 변수를 올바르게 설정하여 설치 문제를 해결할 수 있습니다. 또한 적절한 스토리지 엔진을 선택하고 조정 된 구성 파일을 선택해야하며 SSD를 사용하여 성능을 최적화해야합니다.

Windows 8에서 코드를 실행할 수 있습니다 Windows 8에서 코드를 실행할 수 있습니다 Apr 15, 2025 pm 07:24 PM

VS 코드는 Windows 8에서 실행될 수 있지만 경험은 크지 않을 수 있습니다. 먼저 시스템이 최신 패치로 업데이트되었는지 확인한 다음 시스템 아키텍처와 일치하는 VS 코드 설치 패키지를 다운로드하여 프롬프트대로 설치하십시오. 설치 후 일부 확장은 Windows 8과 호환되지 않을 수 있으며 대체 확장을 찾거나 가상 시스템에서 새로운 Windows 시스템을 사용해야합니다. 필요한 연장을 설치하여 제대로 작동하는지 확인하십시오. Windows 8에서는 VS 코드가 가능하지만 더 나은 개발 경험과 보안을 위해 새로운 Windows 시스템으로 업그레이드하는 것이 좋습니다.

See all articles