正则表达式常用总结
正则表达式,又称正规表示法、常规表示法。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
正则表达式,有木有人像我一样,学了好几遍却还是很懵圈,学的时候老明白了,学完了忘光了。好吧,其实还是练的不够,所谓温故而知新,可以为师矣,今天就随我来复习一下这傲娇的正则表达式吧。
为啥要有正则表达式呢?其实就是因为计算机笨(这话不是我说的),比如123456@qq.com,我们一看就是邮箱,可是计算机不认识啊,所以我们就要用一些计算机认识的语言,来制定好规则,告诉它符合这个规则的就是个邮箱,这样计算机就能帮我们找到对应的东西了。所以正则就是用来设置规则,来完成我们需求的一些操作的,比如登录验证啦,搜索指定的东西啦等等,说太多都是多余,直接看正题吧。
定义正则:
1 var re = new RegExp(“a”); //RegExp对象。参数就是我们想要制定的规则。有一种情况必须用这种方式,下面会提到。
2 var re = /a/; // 简写方法 推荐使用 性能更好 不能为空 不然以为是注释 ,
正则的常用方法
1 test() :在字符串中查找符合正则的内容,若查找到返回true,反之返回false.
用法:正则.test(字符串)
例子:判断是否是数字
var str = '374829348791';
var re = /\D/; // \D代表非数字
if( re.test(str) ){ // 返回true,代表在字符串中找到了非数字。
alert('不全是数字');
}else{
alert('全是数字');
}
正则表达式中有很多符号,代表着不同的意思,用来让我们去定义不同的规则,比如上面\D,还有下面的这些:
\s : 空格
\S : 非空格
\d : 数字
\D : 非数字
\w : 字符 ( 字母 ,数字,下划线_ )
\W : 非字符例子:是否有不是数字的字符
(下面会根据例子,依次讲一些常用的字符,最后再作总结。)
2 search() :在字符串搜索符合正则的内容,搜索到就返回出现的位置(从0开始,如果匹配的不只是一个字母,那只会返回第一个字母的位置), 如果搜索失败就返回 -1
用法:字符串.search(正则)
在字符串中查找复合正则的内容。忽略大小写:i——ignore(正则中默认是区分大小写的 如果不区分大小写的话,在正则的最后加标识 i )
例子:在字符串中找字母b,且不区分大小写
var str = 'abcdef';
var re = /B/i;
//var re = new RegExp('B','i'); 也可以这样写
alert( str.search(re) ); // 1
3 match() 在字符串中搜索复合规则的内容,搜索成功就返回内容,格式为数组,失败就返回null。
用法: 字符串.match(正则)
量词:+ 至少出现一次 匹配不确定的次数(匹配就是搜索查找的意思)
全局匹配:g——global(正则中默认,只要搜索到复合规则的内容就会结束搜索 )
例子:找出指定格式的所有数字,如下找到 123,54,33,879
var str = 'haj123sdk54hask33dkhalsd879';
var re = /\d+/g; // 每次匹配至少一个数字 且全局匹配 如果不是全局匹配,当找到数字123,它就会停止了。就只会弹出123.加上全局匹配,就会从开始到结束一直去搜索符合规则的。如果没有加号,匹配的结果就是1,2,3,5,4,3,3,879并不是我们想要的,有了加号,每次匹配的数字就是至少一个了。
alert( str.match(re) ); // [123,54,33,879]
4 replace() :查找符合正则的字符串,就替换成对应的字符串。返回替换后的内容。
用法: 字符串.replace(正则,新的字符串/回调函数)(在回调函数中,第一个参数指的是每次匹配成功的字符)
| : 或的意思 。
例子:敏感词过滤,比如 我爱北京天安门,天安门上太阳升。------我爱*****,****上太阳升。即北京和天安门变成*号,
一开始我们可能会想到这样的方法:
var str = "我爱北京天安门,天安门上太阳升。";
var re = /北京|天安门/g; // 找到北京 或者天安门 全局匹配
var str2 = str.replace(re,'*');
alert(str2) //我爱**,*上太阳升
//这种只是把找到的变成了一个*,并不能几个字就对应几个*。
要想实现几个字对应几个*,我们可以用回调函数实现:
var str = "我爱北京天安门,天安门上太阳升。";
var re = /北京|天安门/g; // 找到北京 或者天安门 全局匹配
var str2 = str.replace(re,function(str){
alert(str); //用来测试:函数的第一个参数代表每次搜索到的符合正则的字符,所以第一次str指的是北京 第二次str是天安门 第三次str是天安门
var result = '';
for(var i=0;i result += '*'; } return result; //所以搜索到了几个字就返回几个* }); alert(str2) //我爱*****,***上太阳升 //整个过程就是,找到北京,替换成了两个*,找到天安门替换成了3个*,找到天安门替换成3个*。 replace是一个很有用的方法,经常会用到。 正则中的字符 ():,小括号,叫做分组符。就相当于数学里面的括号。如下: var str = '2013-6-7'; var re1 = /\d-+/g; // 全局匹配数字,横杠,横杠数量至少为1,匹配结果为: 3- 6- var re1 = /(\d-)+/g; // 全局匹配数字,横杠,数字和横杠整体数量至少为1 3-6- var re2 = /(\d+)(-)/g; // 全局匹配至少一个数字,匹配一个横杠 匹配结果:2013- 6- 同时,正则中的每一个带小括号的项,都叫做这个正则的子项。子项在某些时候非常的有用,比如我们来看一个栗子。 例子:让2013-6-7 变成 2013.6.7 var str = '2013-6-7'; var re = /(\d+)(-)/g; str = str.replace(re,function($0,$1,$2){ //replace()中如果有子项, //第一个参数:$0(匹配成功后的整体结果 2013- 6-), // 第二个参数 : $1(匹配成功的第一个分组,这里指的是\d 2013, 6) //第三个参数 : $1(匹配成功的第二个分组,这里指的是- - - ) return $1 + '.'; //分别返回2013. 6. }); alert( str ); //2013.6.7 //整个过程就是利用子项把2013- 6- 分别替换成了2013. 6. 最终弹出2013.6.7 match方法也会返回自己的子项,如下: var str = 'abc'; var re = /(a)(b)(c)/; alert( str.match(re) ); //[abc,a,b,c]( 返回的是匹配结果 以及每个子项 当match不加g的时候才可以获取到子项的集合) [] : 表示某个集合中的任意一个,比如 [abc] 整体代表一个字符 匹配 a b c 中的任意一个,也可以是范围,[0-9] 范围必须从小到大 。 [^a] 整体代表一个字符 :^写在[]里面的话,就代表排除的意思 例子:匹配HTML标签 比如
var re = /<[^>]+>/g; //匹配左括号 中间至少一个非右括号的内容(因为标签里面还有属性等一些东西),然后匹配右括号 var re = /<[\w\W]+>/g; //匹配左括号 中间至少一个字符或者非字符的内容,然后匹配右括号// 其实就是找到左括号,然后中间可以有至少一个内容,一直到找到右括号就代表是一个标签。
转义字符
\s : 空格
\S : 非空格
\d : 数字
\D : 非数字
\w : 字符 ( 字母 ,数字,下划线_ )
\W : 非字符
. :任意字符
\. : 真正的点
\b : 独立的部分 ( 起始,结束,空格 )
\B : 非独立的部分
关于最后两个来看个栗子:
var str = 'onetwo';
var str2 ="one two";
var re = /one\b/; // e后面必须是独立的 可以是起始,空格,或结束
alert( re.test(str) ); //false
alert( re.test(str2) );//true
例子:写一个用class名获取节点的函数:
我们之前可能见过这样的函数:
function getByClass(parent,classname){
if(parent.getElementsByClassName){
return parent.getElementsByClassName(classname);
}
else{
var results = new Array();//用来存储所有取到的class为box的元素
var elems = parent.getElementsByTagName("*");
for(var i =0;i if(elems[i].className==classname){ results.push(elems[i]); } } return results; } } 其实这是存在问题的,比如它如果一个标签里面有两个class,或者存在相同名字的class,比如 Linux下system()函数的总结在Linux系统中,system()函数是一个非常常用的函数,它可以用于执行命令行命令。本文将对system()函数进行详细的介绍,并提供一些具体的代码示例。一、system()函数的基本用法system()函数的声明如下:intsystem(constchar*command);其中,command参数是一个字符 最近几年,PHP编程中的模板引擎已经成为了PHP开发的重要组成部分,方便了程序员进行页面开发和管理。本文将介绍PHP编程中常见的模板引擎。SmartySmarty是一个比较常用的PHP模板引擎,它支持缓存模板、插件模块和自定义函数等一系列功能。Smarty的语法十分灵活,能够解决PHP变量与HTML标记的结合难题,使得PHP语言更适用于模板化的设计。而且,S H5开发中position属性的常见应用场景,需要具体代码示例在H5开发中,CSS的position属性非常重要,它控制元素在网页中的定位方式。通过合理应用position属性,我们可以实现页面布局的灵活性和美观性。在本文中,我们将介绍position属性的常见应用场景,并通过具体的代码示例来说明。Static(静态定位):position属性的默认值为st Python作为一种高级编程语言,易于学习和使用。一旦需要编写Python程序时,无法避免地遇到语法错误,表达式语法错误是常见的一种。在本文中,我们将讨论如何解决Python的表达式语法错误。表达式语法错误是Python中最常见的错误之一,它通常是由于错误的使用语法或缺少必要组件而导致的。在Python中,表达式通常由数字、字符串、变量和运算符组成。最常见的 超级全局变量是PHP中非常重要的概念,它可以在程序中访问到任何地方的变量值,而无需使用函数或其他方法来传递变量。在本文中,我们将讨论一下PHP编程中常用的几种超级全局变量。$_GET$_GET是用于收集HTML表单提交的数据的超级全局变量之一。通过$_GET,我们可以获取指定URL中的查询字符串参数,这些参数可以被用于页面的数据过滤或数据查询等操作。例如,当 在C或C++中,逗号“,”有不同的用途。在这里我们将了解如何使用它们。逗号作为运算符。逗号运算符是一个二元运算符,它计算第一个操作数,然后丢弃结果,然后计算第二个操作数并返回值。逗号运算符在C或C++中的优先级最低。示例#include<stdio.h>intmain(){ intx=(50,60); inty=(func1(),func2());}这里60将被分配给x。对于下一条语句,将首先执行func1( Git工作流程管理经验总结引言:在软件开发中,版本管理是一个非常重要的环节。而Git作为目前最流行的版本管理工具之一,其强大的分支管理能力使得团队协作更加高效灵活。本文将就Git工作流程管理经验进行总结和分享。一、Git工作流程简介Git支持多种工作流程,可以根据团队的实际情况选择合适的工作流程。常见的Git工作流程有集中式工作流、功能分支工作流、GitF PHP是一种开放源代码、通用的脚本语言,在网页开发领域有着广泛的应用。在PHP编程中,条件语句则是必不可少的基本语法之一,用于实现程序中的各种逻辑判断和流程控制。本文将介绍PHP编程中常见的条件语句。一、if语句PHP中最常用的条件语句就是if语句。if语句的语法如下:if(条件表达式){//条件为真时执行的语句}其中,条件表达式可以是任意 人工智能驱动的应用程序,用于创建逼真的裸体照片 用于从照片中去除衣服的在线人工智能工具。 免费脱衣服图片 AI脱衣机 免费生成ai无尽的。 Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。 SublimeText3 Linux最新版 微软推出的免费、功能强大的一款IDE编辑器 最流行的的开源编辑器 神级代码编辑软件(SublimeText3)总结Linux系统中system()函数的用法Feb 23, 2024 pm 06:45 PM
PHP编程中有哪些常见的模板引擎?Jun 12, 2023 am 09:50 AM
在H5开发中常见的position属性的应用场景Dec 27, 2023 am 10:08 AM
如何解决Python的表达式语法错误?Jun 24, 2023 pm 05:04 PM
PHP编程中有哪些常见的超级全局变量?Jun 12, 2023 am 09:31 AM
在C和C++中,逗号(comma)的用法是用来分隔表达式或语句Sep 09, 2023 pm 05:33 PM
Git工作流程管理经验总结Nov 03, 2023 pm 06:45 PM
PHP编程中有哪些常见的条件语句?Jun 12, 2023 am 08:25 AM
热AI工具
Undresser.AI Undress
AI Clothes Remover
Undress AI Tool
Clothoff.io
AI Hentai Generator
热门文章
热工具
安全考试浏览器
SublimeText3 Linux新版
VSCode Windows 64位 下载
Atom编辑器mac版下载
SublimeText3 Mac版