javascript正则表达式介绍

正则表达式就是一个用来描述字符模式的对象。它被用来在文本中执行模式匹配(pattern-matching)以及”查找-替换”(search-and-replace)的任务。javascript中正则的风格类似Perl中正则的风格。

创建

var reg = new RegExp(pattern,modifiers);

var reg = /pattern/modifiers;

modifiers包括

  • g : 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)

    ‘Hey, Is this all there Is ‘.replace(/Is/g, ‘is‘);//替换某字符串中所有的Is为is
  • i : 执行对大小写不敏感的匹配
  • m : 执行多行匹配,具体见这里
    ps 新建一正则时可多个模式,如 /hEllO/ig

正则相关方法

  • .test()。该方法对一个字符串进行匹配。并根据匹配结果返回true或false。例如

    /e/.test(‘The best things in life are free‘); //true
  • .exec()。该方法将对一个字符串进行匹配。并返回第一个匹配项目。例如:
    /e/.exec(‘The best things in life are free‘); // ["e"]

在字符串方法中,有match方法,与exec类似。如

‘The best things in life are free‘.match(/e/); //["e"]

正则中的元字符

正则表达式中的元字符是用来替代一类具有相同属性的字符的特殊字符,它也可以被称为字符类(character class)。

  • . 查找单个字符,除了换行和行结束符。
  • \w 查找单词字符(字母、数字以及下划线”_”)。
  • \W 查找非单词字符。
  • \d 查找数字。
  • \D 查找非数字字符。
  • \s 查找空白字符。
  • \S 查找非空白字符。
  • \b 匹配单词边界。
  • \B 匹配非单词边界。
  • \0 查找 NUL 字符。
  • \n 查找换行符。
  • \f 查找换页符。
  • \r 查找回车符。
  • \t 查找制表符。
  • \v 查找垂直制表符。
  • \xxx 查找以八进制数 xxx 规定的字符。
  • \xdd 查找以十六进制数 dd 规定的字符。
  • \uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。

正则表达式中的括号

大括号 ()

进行分组。好比email地址,我们就可以将它分为

  1. @前面的部分;
  2. @后面’.’之前的部分;
  3. ’.’之后的部分;
    如果要匹配所有gamil邮箱中@前的用户名中带有jack的替换为joel
    ‘[email protected]‘.replace(/^(\w*)(jack)(\w*)@gmail\.com$/, ‘[email protected]‘);  //"[email protected]"

    这种类似于模块化的思想,不仅使我们一次可以专注于查找其中的一个小部分,也可以让我们在后面可以轻松的替换其中的某个部分,而不需要纠结于“牵一发而动全身”的痛苦。

方括号 []

用于查找某个范围内的字符

  • [abc] 查找方括号之间的任何字符。
  • [^abc] 查找任何不在方括号之间的字符。
  • [0-9] 查找任何从 0 至 9 的数字。
  • [a-z] 查找任何从小写 a 到小写 z 的字符。
  • [A-Z] 查找任何从大写 A 到大写 Z 的字符。
  • [A-z] 查找任何从大写 A 到小写 z 的字符。
  • [adgk] 查找方括号内的任何字符。
  • [^adgk] 查找不在方括号内的任何字符。

量词

匹配多个。如匹配3个数字可用正则/\d{3}/

  • n+ 匹配任何包含至少一个 n 的字符串。
  • n* 匹配任何包含零个或多个 n 的字符串。
  • n? 匹配任何包含零个或一个 n 的字符串。
  • n{X} 匹配包含 X 个 n 的序列的字符串。
  • n{X,Y} 匹配包含 X 或 Y 个 n 的序列的字符串。
  • n{X,} 匹配包含至少 X 个 n 的序列的字符串。
  • n$ 匹配任何结尾为 n 的字符串。
  • ^n 匹配任何开头为 n 的字符串。
  • ?=n 匹配任何其后紧接指定字符串 n 的字符串。
  • ?!n 匹配任何其后没有紧接指定字符串 n 的字符串。

习题

  1. 在字符串”1.5 0 123 -7 -0.4”里面匹配带小数点的数,无论是正的还是负的。
  2. 在字符串”1.5 0 123”中匹配数字([1.5,0,123]),无论是整数还是小数。
  3. 更多习题

进阶

贪婪和非贪婪模式

默认正则匹配是贪婪模式的,即前面的正则匹配尽可能多的。如

/(\d+)(\d+)/.exec(‘12345‘);//结果["12345", "1234", "5"]

开启非贪婪模式,量词后面加?

/(\d+?)(\d+)/.exec(‘12345‘);//结果["12345", "1", "2345"]

更详细的的解释,点这里

非捕获性分组

在括号内容以?:开头。如:

/(?:\d+)\d+/.exec(‘123‘);// 结果 ["123"]

匹配

Lookaround 是 向前匹配(Lookahead) 和 向后匹配(Lookbehind) 的统称。
向前匹配

包括向前正向匹配(Positive Lookahead)和向前负向匹配(Negative Lookahead),语法是 ?= 和 ?!
前正向匹配:匹配任何其后紧接指定字符串 n 的字符串。
向前负向匹配:匹配任何其后没有紧接指定字符串 n 的字符串。

类似的还有向后匹配。
在javascript目前只能使用 Lookahead,还无法使用 Lookbehind。

Lookaround 参考教程:http://www.regular-expressions.info/lookaround.html

正则拓展库

xregexp特性

  1. 支持所有的ES5的正则的语法。
  2. 兼容 Explorer 5.5+, Firefox 1.5+, Chrome, Safari 3+, and Opera 11+。在nodejs上也可以使用。
  3. 比原生正则可读性高。
  4. 比原生正则易用。

更多资源

参考

习题答案

  1. ‘1.5 0 123 -7 -0.4‘.match(/(-?\d+.\d+)/g)
  2. ‘1.5 0 123‘.match(/(\d+.?\d+)|0/g)

推荐拓展阅读

时间: 2024-11-09 00:57:56

javascript正则表达式介绍的相关文章

正则表达式介绍

1 正则表达式介绍 在JavaScript中,正则表达式是一个用来 匹配 的 并包含 元字符或普通字符 的字符串对象. 在JavaScript中,正则表达式是对象. 使用正则表达式的目的:提高效率 1.1 正则表达式的作用 1 匹配 2 提取 3 替换 1.2 识别正则表达式 "123" "abc" "just do IT" 1.3 元字符 在正则表达式中具有特殊意义的专用字符 符号 含义 基本元字符   . 匹配除换行符外的任意单个字符 (x)

javascript 正则表达式补充

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

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

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

javascript正则表达式和字符串RegExp

这篇文章主要介绍了javascript正则表达式和字符串RegExp and String(一)的相关资料,需要的朋友可以参考下 前言 正则表达式是javascript非常重要和常用的功能,在jquery等大型框架中用的非常频繁,最近抽时间学习了解了相关知识,记录下来与需要的朋友分享. 思维导图: RegExp(正则表达式)的创建方式 可以通过两种方式创建一个RegExp,具体如下: 通过/-./的方式来创建正则表达式(注意: /--/两边是没有单引号或双引号的) 通过RegExp构造方法来创建

JavaScript 正则表达式上——基本语法

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

javascript正则表达式笔记(转载)

在javascript里面的定义 1.通过RegExp构造函数定义一个正则表达式.第一个参数为正则表达式以字符串传入,第二个参数为修饰符也以字符串传入. 例:var caps = new RegExp("[A-Z]", "g"); 2.直接定义一个正则表达式直接量,表达式右正斜杠符号"/"分隔,后直接跟修饰符.(推荐用这种) 例:var caps = /[A-Z]/g; javascript正则表达式常用的字符 字符 描述 例子 [exp] 对于

5分钟教你学会JavaScript正则表达式

正则表达式在实际开发过程中和技术面试过程中的重要性不言而喻,本文仅仅只是教你如何在几分钟之类学会正则表达式,对于它的原理及运行机制不做介绍. 第一:什么是正则 正则表达式是一种用来描述一定数量文本的模式,用来匹配相同规范样式的文本.在JavaScript中用RegExp对象表示正则表达式( 即Regular Eexpression),它是对字符串执行模式匹配的强大工具.我们可以参看W3C所给的说明. 第二:创建一个正则表达式 在JavaScript中创建正则表达式,有2种方式,隐式和显式创建. 

JavaScript正则表达式知识汇总

Js 正则表达式知识汇总 正则表达式: 1.什么是RegExp?RegExp是正则表达式的缩写.RegExp 对象用于规定在文本中检索的内容. 2.定义RegExp:var +变量名=new RegExp(); 3.RegExp 对象有 3 个方法: 1)test()检索字符串中的指定值,返回值是true或false. var p1=new Reg("e"); document.write(Reg.test("welcome to China!")); 2)exec

JavaScript 正则表达式——基本语法--图形化表示易懂

JavaScript 正则表达式——基本语法 定义 JavaScript种正则表达式有两种定义方式,定义一个匹配类似 <%XXX%> 的字符串 1. 构造函数 var reg=new RegExp('<%[^%>]+%>','g'); 2. 字面量 var reg=/<%[^%>]%>/g; g: global,全文搜索,默认搜索到第一个结果接停止 i: ingore case,忽略大小写,默认大小写敏感 m: multiple lines,多行搜索(更改^