목차
浅谈正则表达式,正则表达式
一、什么是正则表达式?
二、正则表达式的应用
第一种:数据验证
第二种:内容查找
第三种:内容替换
三、正则表达式有哪些内容
1、 正则表达式的几个重要的概念
2、数量限定符
3、 字符限定符
4、 定位符
5、转义符
6、选择匹配符
7、特殊用法
四、正则表达式在Javascript下的使用方法
第一种方法:使用RegExp类
第二种方法是:使用String类
五、正则表达式在PHP下的使用方法
第一种是:Perl正则表达式函数
第二种是:POSIX正则表达式函数
六、总结
1、功能强大
2、简洁方便
3、各种语言基本上都支持
4、学习很简单,应用很高深
正则表达式
什是正则表达式?举例说明一下
백엔드 개발 PHP 튜토리얼 浅谈正则表达式,正则表达式_PHP教程

浅谈正则表达式,正则表达式_PHP教程

Jul 13, 2016 am 10:21 AM
정규식

浅谈正则表达式,正则表达式

一、什么是正则表达式?

简单的说:正则表达式(Regular Expression)是一种处理字符串匹配的语言;

正则表达式描述了一种字符串匹配的模式,可以用来检查一个字符串是否含有某种子串,对匹配到的子串进行“取出”或“替换”操作。

二、正则表达式的应用

正则表达式在实际的开发过程中非常实用,能够快速解决一些复杂的字符串处理问题,下面我对正则表达式的应用做一些简单分类:

第一种:数据验证

比如,你要验证一个字符串是否是正确的EMail,Telphone,Ip等等,那么采用正则表达式就好非常方便。

第二种:内容查找

比如,你要抓取一个网页的图片,那么你肯定要找到浅谈正则表达式,正则表达式_PHP教程标签,这时候用正则表达式就可以精准的匹配到。

第三种:内容替换

比如,你要把手机号码中间四位隐藏掉变成这种模式,123****4567,那么采用正则表达式也会非常方便。

三、正则表达式有哪些内容

下面我将简单的介绍一下正则表达式:

1、 正则表达式的几个重要的概念

  • 子表达式:在正则表达式中,如果使用"()"括起来的内容,称之为“子表达式”
  • 捕获:子表达式匹配到的结果会被系统放在缓冲区中,这个过程,我们称之为“捕获”
  • 反向引用:我们使用"\n",其中n是数字,表示引用之前某个缓冲区之间的内容,我们称之为“反向引用”

2、数量限定符

  • X+     表示:1或多个
  • X*     表示:0或多个
  • X?     表示:0或1个
  • X{n}    表示: n个
  • X{n,}    表示:至少n个
  • X{n,m}   表示:n至m个,贪婪原则,会尽可能匹配多个;如果在后面加个?,则为非贪婪原则

注:X表示要查找的字符

3、 字符限定符

  • \d   表示:匹配一个数字字符,[0-9]
  • \D  表示:匹配一个非数字字符,[^0-9]
  • \w  表示:匹配包括下划线在内的单词字符,[0-9a-zA-Z_]
  • \W  表示:匹配任何非单词字符,[^0-9a-zA-Z_]
  • \s  表示:匹配任何空白字符,空格、回车、制表符
  • \S  表示:匹配任何非空白字符
  • .    表示:匹配任何单个字符

此外还有以下几种:

范围字符:[a-z]、[A-Z]、[0-9]、[0-9a-z]、[0-9a-zA-Z]
任意字符:[abcd]、[1234]
非在内的字符:[^a-z]、[^0-9]、[^abcd]

4、 定位符

  • ^  表示:开头标识
  • $  表示:结尾标识
  • \b   表示:单词边界
  • \B  表示:非单词边界

5、转义符

  • \   用于匹配某些特殊字符

6、选择匹配符

  • |   可以匹配多个规则

7、特殊用法

  • (?=) : 正向预查:匹配以指定内容结束的字符串
  • (?!) : 负向预查:匹配不是以指定内容结束的字符串
  • (?:) : 不把选择匹配符的内容放到缓冲区

四、正则表达式在Javascript下的使用方法

在Javascript下使用正则表达式,有两种方法:

第一种方法:使用RegExp类

提供的方法有:

  • test(str): 在字符串匹配是否有匹配模式的字符串,返回true/false
  • exec(str): 返回匹配模式匹配到的字符串,如果有,返回相应的字符串,无,返回null;

        //如果正则表达式中有子表达式,使用exec方法时

        //返回的是:result[0] = 匹配结果 , result[1] = 子表达式1的匹配结果 ……

第二种方法是:使用String类

提供的方法有:

  • search : 返回匹配模式的字符串出现的位置,如果没有,返回-1
  • match : 返回匹配模式匹配到的字符串,如果有,返回数组,无,返回null
  • replace : 将匹配模式匹配到的字符串进行替换
  • split : 将字符串已匹配模式为分隔符进行字符串分隔,返回数组

五、正则表达式在PHP下的使用方法

PHP下有两种使用正则表达式的函数:

第一种是:Perl正则表达式函数

提供的方法有:

  • preg_grep --  返回与模式匹配的数组单元
  • preg_match_all -- 进行全局正则表达式匹配
  • preg_match -- 进行正则表达式匹配
  • preg_quote -- 转义正则表达式字符
  • preg_replace_callback -- 用回调函数执行正则表达式的搜索和替换
  • preg_replace -- 执行正则表达式的搜索和替换
  • preg_split -- 用正则表达式分割字符串

第二种是:POSIX正则表达式函数

提供的方法有:

  • ereg_replace -- 替换正则表达式
  • ereg -- 正则表达式匹配
  • eregi_replace -- 不区分大小写替换正则表达式
  • eregi -- 不区分大小写的正则表达式匹配
  • split -- 用正则表达式将字符串分割到数组中
  • spliti --  用正则表达式不区分大小写将字符串分割到数组中
  • sql_regcase --  产生用于不区分大小的匹配的正则表达式  

六、总结

正则表达式就是我们实现某个功能的一个工具,这个工具:

1、功能强大

正则表达式中各种限定符的不同组合会实现不同的功能,有时实现一个复杂的功能需要编写很长的正则表达式,如何能精准匹配,这就要考验一个程序员的能力了。

2、简洁方便

平常我们在进行字符串内容查找,只能进行某个特定字符串的查找,但是正则表达式可以帮助我们进行模糊查找,更快更方便,仅仅需要一个正则表达式串。

3、各种语言基本上都支持

目前如JAVA、PHP、Javascript、C#、C++等主流语言都支持正则表达式。

4、学习很简单,应用很高深

学习正则表达式很快也很简单,但是如何在实际开发中编写出高效地,精准地正则表达式,还是需要长时间的尝试和积累。

正则表达式

正则经常用于js 判断手机号,邮箱等,通过简单的办法来实现强大的功能

符号解释

字符 描述
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'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}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
. 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。
x|y 匹配 x 或 y。例如,'z......余下全文>>
 

什是正则表达式?举例说明一下

目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境,以及很多的应用软件中,都可以看到正则表达式的影子。

正则表达式的使用,可以通过简单的办法来实现强大的功能。为了简单有效而又不失强大,造成了正则表达式代码的难度较大,学习起来也不是很容易,所以需要付出一些努力才行,入门之后参照一定的参考,使用起来还是比较简单有效的。

例子: ^.+@.+\\..+$

2. 正则表达式的历史

正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts 这两位神经生理学家研究出一种数学方式来描述这些神经网络。
1956 年, 一位叫 Stephen Kleene 的数学家在 McCulloch 和 Pitts 早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式,因此采用“正则表达式”这个术语。

随后,发现可以将这一工作应用于使用 Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson 是 Unix 的主要发明人。正则表达式的第一个实用应用程序就是 Unix 中的 qed 编辑器。

如他们所说,剩下的就是众所周知的历史了。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分
3. 正则表达式定义
正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。

列目录时, dir *.txt或ls *.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*的含义是不同的。
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

3.1 普通字符
由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符,所有数字,所有标点符号以及一些符号。

3.2 非打印字符 字符 含义
\cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\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。

3.3 特殊字符

所谓特殊字符,就是一些有特殊含义的字符,如上面说的"*.txt"中的*,简单的......余下全文>>
 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/856578.htmlTechArticle浅谈正则表达式,正则表达式 一、什么是正则表达式? 简单的说:正则表达式(Regular Expression)是一种处理字符串匹配的语言; 正则表达...
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

PHP 정규식 유효성 검사: 숫자 형식 감지 PHP 정규식 유효성 검사: 숫자 형식 감지 Mar 21, 2024 am 09:45 AM

PHP 정규식 확인: 숫자 형식 감지 PHP 프로그램을 작성할 때 사용자가 입력한 데이터를 확인해야 하는 경우가 종종 있습니다. 일반적인 확인 중 하나는 데이터가 지정된 숫자 형식을 준수하는지 확인하는 것입니다. PHP에서는 정규식을 사용하여 이러한 종류의 유효성 검사를 수행할 수 있습니다. 이 기사에서는 PHP 정규식을 사용하여 숫자 형식을 확인하고 구체적인 코드 예제를 제공하는 방법을 소개합니다. 먼저 일반적인 숫자 형식 유효성 검사 요구 사항을 살펴보겠습니다. 정수: 0~9의 숫자만 포함하고 더하기 또는 빼기 기호로 시작할 수 있으며 소수점을 포함하지 않습니다. 부동 소수점

정규식을 사용하여 Golang에서 이메일 주소를 확인하는 방법은 무엇입니까? 정규식을 사용하여 Golang에서 이메일 주소를 확인하는 방법은 무엇입니까? May 31, 2024 pm 01:04 PM

정규식을 사용하여 Golang에서 이메일 주소를 확인하려면 다음 단계를 따르세요. regexp.MustCompile을 사용하여 유효한 이메일 주소 형식과 일치하는 정규식 패턴을 만듭니다. MatchString 함수를 사용하여 문자열이 패턴과 일치하는지 확인합니다. 이 패턴은 다음을 포함하여 대부분의 유효한 이메일 주소 형식을 다룹니다. 로컬 사용자 이름에는 문자, 숫자 및 특수 문자가 포함될 수 있습니다: !.#$%&'*+/=?^_{|}~-`도메인 이름에는 최소한 다음이 포함되어야 합니다. 문자 1개 뒤에 문자, 숫자 또는 하이픈이 옵니다. 최상위 도메인(TLD)의 길이는 63자를 초과할 수 없습니다.

Go에서 정규식을 사용하여 타임스탬프를 일치시키는 방법은 무엇입니까? Go에서 정규식을 사용하여 타임스탬프를 일치시키는 방법은 무엇입니까? Jun 02, 2024 am 09:00 AM

Go에서는 정규식을 사용하여 타임스탬프를 일치시킬 수 있습니다. ISO8601 타임스탬프를 일치시키는 데 사용되는 것과 같은 정규식 문자열을 컴파일합니다. ^\d{4}-\d{2}-\d{2}T \d{ 2}:\d{2}:\d{2}(\.\d+)?(Z|[+-][0-9]{2}:[0-9]{2})$ . regexp.MatchString 함수를 사용하여 문자열이 정규식과 일치하는지 확인합니다.

Go 언어의 정규식 및 문자열 처리를 마스터하세요. Go 언어의 정규식 및 문자열 처리를 마스터하세요. Nov 30, 2023 am 09:54 AM

최신 프로그래밍 언어인 Go 언어는 강력한 정규식과 문자열 처리 기능을 제공하여 개발자가 문자열 데이터를 보다 효율적으로 처리할 수 있도록 해줍니다. 개발자가 Go 언어에서 정규식과 문자열 처리를 익히는 것은 매우 중요합니다. 본 글에서는 Go 언어에서 정규 표현식의 기본 개념과 사용법, Go 언어를 사용하여 문자열을 처리하는 방법을 자세히 소개합니다. 1. 정규식 정규식은 문자열 패턴을 설명하는 데 사용되는 도구로 문자열 일치, 검색, 바꾸기 등의 작업을 쉽게 구현할 수 있습니다.

PHP 정규식: 퍼지 포함의 정확한 일치 및 제외 PHP 정규식: 퍼지 포함의 정확한 일치 및 제외 Feb 28, 2024 pm 01:03 PM

PHP 정규식: 정확한 일치 및 제외 퍼지 포함 정규식은 프로그래머가 텍스트를 처리할 때 효율적인 검색, 바꾸기 및 필터링을 수행하는 데 도움이 되는 강력한 텍스트 일치 도구입니다. PHP에서는 정규식도 문자열 처리 및 데이터 일치에 널리 사용됩니다. 이 기사에서는 PHP에서 정확한 일치를 수행하고 퍼지 포함 작업을 제외하는 방법에 중점을 두고 구체적인 코드 예제를 통해 설명합니다. 완전 일치 완전 일치는 변형이나 추가 단어가 아닌 정확한 조건을 충족하는 문자열만 일치하는 것을 의미합니다.

Go에서 정규식을 사용하여 비밀번호를 확인하는 방법은 무엇입니까? Go에서 정규식을 사용하여 비밀번호를 확인하는 방법은 무엇입니까? Jun 02, 2024 pm 07:31 PM

Go에서 정규식을 사용하여 비밀번호를 확인하는 방법은 다음과 같습니다. 최소 비밀번호 요구 사항(소문자, 대문자, 숫자, 특수 문자를 포함하여 8자 이상)을 충족하는 정규식 패턴을 정의합니다. regexp 패키지의 MustCompile 함수를 사용하여 정규식 패턴을 컴파일합니다. MatchString 메서드를 사용하여 입력 문자열이 정규식 패턴과 일치하는지 테스트합니다.

정규식 와일드카드란 무엇입니까? 정규식 와일드카드란 무엇입니까? Nov 17, 2023 pm 01:40 PM

정규식 와일드카드에는 ".", "*", "+", "?", "^", "$", "[]", "[^]", "[a-z]", "[A-Z] "가 포함됩니다. ,"[0-9]","\d","\D","\w","\W","\s&quo

Golang에서 정규식으로 URL을 감지하는 방법은 무엇입니까? Golang에서 정규식으로 URL을 감지하는 방법은 무엇입니까? May 31, 2024 am 10:32 AM

정규식을 사용하여 Golang에서 URL을 탐지하는 단계는 다음과 같습니다. regexp.MustCompile(pattern)을 사용하여 정규식 패턴을 컴파일합니다. 패턴은 프로토콜, 호스트 이름, 포트(선택 사항), 경로(선택 사항) 및 쿼리 매개 변수(선택 사항)와 일치해야 합니다. URL이 패턴과 일치하는지 확인하려면 regexp.MatchString(pattern,url)을 사용하세요.

See all articles