【JavaScript】正则表达式

正则表达式原来在机房重构的时候就了解过,那时候看博客有伙伴用正则表达式对输入框内容进行限制,用的那些字符但是看着不懂,只知道可以达到那样的效果,学习asp.net验证控件的时候的时候又用到它,这次学习JavaScript再次了解它,那么下面我们来认识一下正则表达式。

一、什么是正则表达式

正则表达式(regular expression)是一个描述字符模式的对象。ECMAScript的RegExp类表示正则表达式,String和RegExp都定义了使用正则表达式进行强大的模式匹配和文本检索与替换的函数。百度解释为正则表达式,又称正规表示法、常规表示法,它使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。我的理解就是

二、为什么使用正则表达式

正则表达式主要用来验证客户端输入数据(像学号,姓名,性别,电话,邮箱等等)。用户填写完单击按钮之后,信息会被发送到服务器,在提交到服务器前会首先进行验证,程序中的正则表达式主要用来验证客户端输入的数据,可以节约大量的服务器端的系统资源,并且可以提供更好的用户体验。

三、创建

创建正则表达式和创建字符串类似,有两种方法:

1.通过new运算符

<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">var box=new RegExp('box','ig');</span></span>

2.字面量方式

<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">var box=/box/ig;</span></span>

四、测试正则表达式

RegExp对象包含两个方法:test()和exec(),功能基本相似,用于测试字符串匹配。

1.test()方法

test()方法在字符串中查找是否存在制定的正则表达式并返回布尔值,如果存在则返回true,如果不存在则返回false。

<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">var pattern=new RegExp('box','i');//创建正则表达式,不区分大小写
var str='This is a Box!';         //创建要比对的字符串
alert(pattern.test(str));         //通过test()方法验证是否匹配</span></span>

运行弹出提示框:

2.exec()方法

exec()方法也用于在字符串中查找制定正则表达式,如果exec()方法执行成功,则返回包含该查找字符串的相关信息数组,如果执行失败,则返回null.

<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">/*使用exec返回匹配数组*/
var pattern=/vivian/i;
var str='I am vivian!';
alert(pattern.exec(str));     //匹配了返回数组,否则返回null</span></span>

运行弹出提示框:

五、使用字符串的正则表达式的方法

以replace()方法为例:

<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">/*使用exec返回匹配数组*/
var pattern=/vivian/ig;
var str='I am vivian!,She is vivian too';
alert(str.replace(pattern,'Lily'));     //将vivian替换为 Lily</span></span>

运行后显示:

六、获取控制

正则表达式元字符是包含特殊含义的字符,它们有一些特殊功能,可以控制匹配模式的方式。

以邮箱验证为例:

<span style="font-family:KaiTi_GB2312;font-size:18px;">var pattern=/^([\w\.\-]+)@([\w\-]+)\.([\w]{2,4})$/;
var str='[email protected]';
alert(pattern.test(str));</span>

贪婪和惰性

贪婪:先看整个字符串是否匹配,如果不匹配就把最后一个字符串去掉再进行匹配,依次从右向左,直到找到匹配或者不剩任何字符才停止。

惰性:先看第一个字符串是否匹配,如果不匹配再看第二个,以此类推从左到右,与贪婪量词方向相反。

1.贪婪模式:

<span style="font-family:KaiTi_GB2312;font-size:18px;">var pattern=/[a-z]+/;
var str='abcdefj';
alert(str.replace(pattern,'1'));</span>

所有字符串变为1,最后运行结果为:1

2.惰性模式:

<span style="font-family:KaiTi_GB2312;font-size:18px;">var pattern=/[a-z]+?/;
var str='abcdefj';
alert(str.replace(pattern,'1'));</span>

只有第一个字符变为1,后面没有匹配,运行结果为:1bcdefj

总结:

原来学习asp.net验证控件的时候有电子邮箱的验证,选择了之后会看到一大串的又是字母和数字又是符号的东西,那时候就在想这是什么鬼东西,现在学习了js才知道原来是这样,asp.net已经将正则表达式封装好了,不需要我们自己去写。

这篇博客只是介绍了一些基础中的基础,写的例子也是比较简单的,这篇博客就作为入门吧。正则表达式真的是好强大,我们可以写出符合我们要求的东西,但是它的匹配符有许多,现在我对于它们只是皮毛中的皮毛,如果真的要熟悉还需要多写才行。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-04 01:06:43

【JavaScript】正则表达式的相关文章

javascript正则表达式修饰符之multiline(/m)的使用

javascript正则表达式有3种修饰符/i./m和/g./i是我们最常用,也是最好理解的,代表正则表达式匹配的时候不区分大小写. var regex = /abc/i; alert(regex.test("aBc"));//true /m代表多行模式multiline,如果目标字符串中不含有换行符\n,即只有一行,那么/m修饰符没有任何意义. var multiline = /abc/m; var singleline = /abc/; //目标字符串不含换行符\n var tar

javascript 正则表达式补充

定义 JavaScript种正则表达式有两种定义方式,定义一个匹配类似 <%XXX%> 的字符串 1. 构造函数 var reg=new RegExp('<%[^%>]+%>','g'); 2. 字面量 var reg=/<%[^%>]%>/g; g: global,全文搜索,默认搜索到第一个结果接停止 i: ingore case,忽略大小写,默认大小写敏感 m: multiple lines,多行搜索 元字符 正则表达式让人望而却步以一个重要原因就是其转

javascript正则表达式定义的方法是什么

javascript正则表达式的2种定义方法:一种是直接调用RegExp(),第二种是直接用字面量来定义,即var re = /正则规则/; js正则表达式的2种定义方法本质都是调用RegExp()方法 在调用同一段正则代码的时候,ECMAScript3和ECMAScript5中表现完全不一样 function reg(){ var re = /\sjavascript/; return re; } 分别在ECMAScript3和ECMAScript5中调用reg()方法多次 在ECMAScri

web前端之JavaScript正则表达式

web前端之JavaScript正则表达式 后面有代码: \d 表示数字 \d? ?表示0个或者一个 \d+ +表示一个或者多个 \d{3} 表示三个 \d{3,5} 表示三到五个 \d{3,} 表示至少出现3次 \d* *表示0到任意个 \b 表示单词边界 \B 表示非单词边界 \bis\b 表示查找" is "的 . 表示任意字符 \ 表示转译 http:(\/\/.+\.jpg) 用()进行分组 $1 获取其内部东西 []表示或 ^表示开头 $表示结尾 g表示全局 \d{4}[/

JavaScript - 正则表达式举例

JavaScript - 正则表达式举例 正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功:一旦有匹配不成功的字符则匹配失败. 正则表达式通常用于在文本中查找匹配的字符串.Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符:非贪婪的则相反,总是尝试匹配尽可能少的字符.例如:正则表达式"ab*"如果用于查找"abbbc",将找到"abbb".而如果使用非贪婪

javascript正则表达式简介

javascript正则表达式 javascript正则表达式 regular expression是一个描述字符模式的对象: ECMAScript中的RegExp类表示正则表达式: String和RegExp都定义了使用正则表达式进行强大的模式匹配.文本检索和替换的函数: 正则表达式主要用来验证客户端的输入数据: Ⅰ.创建正则表达式 类似于创建字符串,可以使用new运算符也可以采用字面值: 参数 含义 g 全局匹配 i 忽略大小写 m 多行匹配 下文中的javascript代码是通过 Ecli

自己实现的一款在线Javascript正则表达式测试器——JRE-Parser

本文最初发布于我的个人博客:http://jerryzou.com/posts/jreparser/ 昨天在看<正则表达式30分钟入门教程>的时候,看到博主自己实现了一个C#写的正则测试器,看上去挺方便的样子.但是我自己又不太喜欢乱装东西,所以寻思着能不能自己实现一个javascript正则表达式测试器.于是几十行代码实现了这样一个正则测试器. 先展示一下0.1版本的效果图吧~ 页面还比较简单,但是基本功能算是有了.可以正常使用~. 关于怎么从用户的输入中提取正则表达式的过程多亏@依云大神提点

JavaScript之基础-10 JavaScript 正则表达式(概述、定义正则、RegExp对象、用于模式匹配的String方法)

一.JavaScript 正则表达式概述 正则表达式概述 - 正则表达式(Regular Expression): 由一些普通字符和特殊字符组成的,用以描述一种特定的字符规则的表达式 - 正则表达式常用于在一段文本中搜索.匹配或替换特定形式的文本.如:词语出现频率统计.验证字符串是否符合邮件格式.屏蔽一篇帖子中的限制性词语等 正则表达式初体验 - 验证用户输入的手机格式是否合法 二.JavaScript 定义正则表达式 普通字符 - 所有的单个大小写字母.数字都是一个正则表达式,用以匹配单个字符

JavaScript正则表达式-字符

JavaScript正则表达式字符包括两类: 1.普通字符. 2.转义字符. 普通字符 大小写字母.数字.其他任何符号. 转义字符 转义字符 含义 \f 换页符 \n 换行符 \r 回车符 \t 制表符 \b 退格符 \o 空字符 \xnn 由十六进制数nn指定的ASCII码对应的字符 \uxxx 由十六进制数xxxx指定的Unicode字符 \\ 反斜线 ^ 要匹配"^"字符本身需要使用"\^" $ 要匹配"$"字符本身需要使用"\$

JavaScript正则表达式语法及使用范例大全

JavaScript正则表达式 1.      使用JS正则表达式,首先要了解JS正则表达式的常用符号,如下图: /-/ 代表一个模式的开始和结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 \s 匹配一个空白字符 \S 匹配一个非空白字符 \d 匹配一个数字字符,等价于[0-9] \D 匹配一个非数字字符,等价于[^0-9] \w 匹配一个数字.字母.或下划线,等价于[A-Za-z0-9_] . 匹配一个除了换行符之外的字符 \ 转义字符,对于上述这些特殊的符号,如果要匹配,则需要加\进行转义