搜索
首页后端开发php教程正则表达式的作用是什么

正则表达式的作用是什么

Jun 13, 2016 am 11:45 AM
正则表达式

正则表达式是对字符串操作的一种逻辑公式;作用:检索、替换那些符合某个模式(规则)的文本,可以通过一些设定的规则来匹配一些字符串,是一个强大的字符串匹配工具。

正则表达式的作用是什么

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

正则表达式的作用

正则表达式可以用来检索、替换那些符合某个模式(规则)的文本;可以通过一些设定的规则来匹配一些字符串,是一个强大的字符串匹配工具。

正则表达式方法

基本语法,正则声明

js中,正则的声明有两种方式

1、直接量语法:

var reg = /d+/g/

2、创建RegExp对象的语法

var reg = new RegExp("\\d+", "g");

这两种声明方式其实还是有区别的,平时的话我比较喜欢第一种,方便一点,如果需要给正则表达式传递参数的话,那么只能用第二种创建RegExp的形式

格式:

var pattern = new RegExp('regexp','modifier');
  • regexp: 匹配的模式,也就是上文指的正则规则。

  • modifier: 正则实例的修饰符,可选值有:

  • i : 表示区分大小写字母匹配。

  • m :表示多行匹配。

  • g : 表示全局匹配。

传参的形式如下:

我们用构造函数来生成正则表达式

var re = new RegExp("^\\d+$","gim");

这里需要注意,反斜杠需要转义,所以,直接声明量中的语法为\d,这里需要为 \\d
那么,给它加变量,就和我们前面写的给字符串加变量一样了。

var v = "bl";
var re =new RegExp("^\\d+" + v + "$","gim"); // re为/^\d+bl$/gim

支持正则的STRING对象方法

1、search 方法

作用: 该方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的字符串

基本语法: stringObject.search(regexp);

返回值: 该字符串中第一个与regexp对象相匹配的子串的起始位置。如果没有找到任何匹配的子串,则返回-1;

注意点: search()方法不执行全局匹配,它将忽略标志g,

var str = "hello world,hello world";
// 返回匹配到的第一个位置(使用的regexp对象检索)
console.log(str.search(/hello/)); // 0
// 没有全局的概念 总是返回匹配到的第一个位置
console.log(str.search(/hello/g)); //0
 
console.log(str.search(/world/)); // 6
 
// 如果没有检索到的话,则返回-1
console.log(str.search(/longen/)); // -1
 
// 我们检索的时候 可以忽略大小写来检索
var str2 = "Hello";
console.log(str2.search(/hello/i)); // 0

2、match()方法

作用: 该方法用于在字符串内检索指定的值,或找到一个或者多个正则表达式的匹配。类似于indexOf()或者lastIndexOf();

基本语法: stringObject.match(searchValue) 或者stringObject.match(regexp)

返回值:

  存放匹配成功的数组; 它可以全局匹配模式,全局匹配的话,它返回的是一个数组。如果没有找到任何的一个匹配,那么它将返回的是null;

  返回的数组内有三个元素,第一个元素的存放的是匹配的文本,还有二个对象属性

  index属性表明的是匹配文本的起始字符在stringObject中的位置,input属性声明的是对stringObject对象的引用

var str = "hello world";
console.log(str.match("hello")); // ["hello", index: 0, input: "hello world"]
console.log(str.match("Helloy")); // null
console.log(str.match(/hello/)); // ["hello", index: 0, input: "hello world"]
// 全局匹配
var str2="1 plus 2 equal 3"
console.log(str2.match(/\d+/g)); //["1", "2", "3"]

3、replace()方法

作用: 该方法用于在字符串中使用一些字符替换另一些字符,或者替换一个与正则表达式匹配的子字符串;

基本用法: stringObject.replace(regexp/substr,replacement);

返回值: 返回替换后的新字符串

注意: 字符串的stringObject的replace()方法执行的是查找和替换操作,替换的模式有2种,既可以是字符串,也可以是正则匹配模式,如果是正则匹配模式的话,那么它可以加修饰符g,代表全局替换,否则的话,它只替换第一个匹配的字符串;

replacement 既可以是字符串,也可以是函数,如果它是字符串的话,那么匹配的将与字符串替换,replacement中的$有具体的含义,如下:

  •   $1,$2,$3….$99 含义是:与regexp中的第1到第99个子表达式相匹配的文本。可以看下面的例子

  •   $& 的含义是:与RegExp相匹配的子字符串。

  •   lastMatch或RegExp[“$_”]的含义是:返回任何正则表达式搜索过程中的最后匹配的字符。

  •   lastParen或 RegExp[“$+”]的含义是:返回任何正则表达式查找过程中最后括号的子匹配。

  •   leftContext或RegExp[“$`”]的含义是:返回被查找的字符串从字符串开始的位置到最后匹配之前的位置之间的字符。

  •   rightContext或RegExp[“$’”]的含义是:返回被搜索的字符串中从最后一个匹配位置开始到字符串结尾之间的字符。

var str = "hello world";
// 替换字符串
var s1 = str.replace("hello","a");
console.log(s1);// a world
// 使用正则替换字符串
var s2 = str.replace(/hello/,"b");
console.log(s2); // b world
 
// 使用正则全局替换 字符串
var s3 = str.replace(/l/g,'');
console.log(s3); // heo word
 
// $1,$2 代表的是第一个和第二个子表达式相匹配的文本
// 子表达式需要使用小括号括起来,代表的含义是分组
var name = "longen,yunxi";
var s4 = name.replace(/(\w+)\s*,\s*(\w+)/,"$2 $1");
console.log(s4); // "yunxi,longen"
 
var str = '123-mm';
var strReg = str.replace(/(\d+)-([A-Za-z]+)/g,'$2');
console.log(strReg)//mm 上面那段$2这个就是表示正则第二组个匹配到的内容,也就是说$1,$2.. 表示的是第几个括号匹配到的内容
 
// $& 是与RegExp相匹配的子字符串
var name = "hello I am a chinese people";
var regexp = /am/g;
if(regexp.test(name)) {
//返回正则表达式匹配项的字符串
console.log(RegExp['$&']); // am
 
//返回被搜索的字符串中从最后一个匹配位置开始到字符串结尾之间的字符。
console.log(RegExp["$'"]); // a chinese people
 
//返回被查找的字符串从字符串开始的位置到最后匹配之前的位置之间的字符。
console.log(RegExp['$`']); // hello I
 
// 返回任何正则表达式查找过程中最后括号的子匹配。
console.log(RegExp['$+']); // 空字符串
 
//返回任何正则表达式搜索过程中的最后匹配的字符。
console.log(RegExp['$_']); // hello I am a chinese people
}
 
// replace 第二个参数也可以是一个function 函数
var name2 = "123sdasadsr44565dffghg987gff33234";
name2.replace(/\d+/g,function(v){
console.log(v);
// 第一次打印123
// 第二次打印44565
// 第三次打印987
// 第四次打印 33234
});

REGEXP对象方法

test()方法

作用: 该方法用于检测一个字符串是否匹配某个模式;

基本语法: RegExpObject.test(str);

返回: 返回true,否则返回false;

var str = "longen and yunxi";
console.log(/longen/.test(str)); // true
console.log(/longlong/.test(str)); //false
 
// 或者创建RegExp对象模式
var regexp = new RegExp("longen");
console.log(regexp.test(str)); // true

exec()方法

作用: 该方法用于检索字符串中的正则表达式的匹配

基本语法: RegExpObject.exec(string)

返回值: 返回一个数组,存放匹配的结果,如果未找到匹配,则返回值为null;

注意点: 该返回的数组的第一个元素是与正则表达式相匹配的文本

该方法还返回2个属性,index属性声明的是匹配文本的第一个字符的位置;input属性则存放的是被检索的字符串string;该方法如果不是全局的话,返回的数组与match()方法返回的数组是相同的。

var str = "longen and yunxi";
console.log(/longen/.exec(str));
// 打印 ["longen", index: 0, input: "longen and yunxi"]
 
// 假如没有找到的话,则返回null
console.log(/wo/.exec(str)); // null

更多相关知识,请访问 PHP中文网!!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
继续使用PHP:耐力的原因继续使用PHP:耐力的原因Apr 19, 2025 am 12:23 AM

PHP仍然流行的原因是其易用性、灵活性和强大的生态系统。1)易用性和简单语法使其成为初学者的首选。2)与web开发紧密结合,处理HTTP请求和数据库交互出色。3)庞大的生态系统提供了丰富的工具和库。4)活跃的社区和开源性质使其适应新需求和技术趋势。

PHP和Python:探索他们的相似性和差异PHP和Python:探索他们的相似性和差异Apr 19, 2025 am 12:21 AM

PHP和Python都是高层次的编程语言,广泛应用于Web开发、数据处理和自动化任务。1.PHP常用于构建动态网站和内容管理系统,而Python常用于构建Web框架和数据科学。2.PHP使用echo输出内容,Python使用print。3.两者都支持面向对象编程,但语法和关键字不同。4.PHP支持弱类型转换,Python则更严格。5.PHP性能优化包括使用OPcache和异步编程,Python则使用cProfile和异步编程。

PHP和Python:解释了不同的范例PHP和Python:解释了不同的范例Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP和Python:深入了解他们的历史PHP和Python:深入了解他们的历史Apr 18, 2025 am 12:25 AM

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

在PHP和Python之间进行选择:指南在PHP和Python之间进行选择:指南Apr 18, 2025 am 12:24 AM

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

PHP和框架:现代化语言PHP和框架:现代化语言Apr 18, 2025 am 12:14 AM

PHP在现代化进程中仍然重要,因为它支持大量网站和应用,并通过框架适应开发需求。1.PHP7提升了性能并引入了新功能。2.现代框架如Laravel、Symfony和CodeIgniter简化开发,提高代码质量。3.性能优化和最佳实践进一步提升应用效率。

PHP的影响:网络开发及以后PHP的影响:网络开发及以后Apr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型?PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型?Apr 17, 2025 am 12:25 AM

PHP类型提示提升代码质量和可读性。1)标量类型提示:自PHP7.0起,允许在函数参数中指定基本数据类型,如int、float等。2)返回类型提示:确保函数返回值类型的一致性。3)联合类型提示:自PHP8.0起,允许在函数参数或返回值中指定多个类型。4)可空类型提示:允许包含null值,处理可能返回空值的函数。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具