知道正则表达式已经很久了,粗略会看懂一些,不过以前没有系统的学习,最近在看《JS权威指南》,刚好看到了看到正则表达式部分,就比较系统的学习了正则表达式。

先说一下正则表达式的一些基本知识

定义

正则表达式直接量被定义在一对斜杠之间(/)

直接量字符(前面7个感觉用的会比较多)

字母或数字(自身)

\o(NULL字符)

\n(换行符)

\t(制表符)

\v(垂直制表符)

\f(换页符)

\r(回车)

\xnn(16进制数nn指定的拉丁字符)

\uxxxx(16进制数xxxx指定的Unicode字符)

\cX(控制字符^X)

字符类

[...](位于括号内的任意字符)

[^...](不位于括号内得任意字符)

.(除换行符和其他Unicode行终止符之外的任意字符)

\w([a-zA-Z0-9])

\W([^a-zA-Z0-9])

\s(任何Unicode空白符)

\S(任何非Unicode空白符,\w和\S不同)

\d([0-9])

\D([^0-9])

[\b](退格直接量)特例

重复字符

{n,m}(匹配前一项至少n次至多m次)

{n,}(匹配前一项至少n次或更多次)

{n}(匹配前一项恰好n次)

?(匹配前一项0次或1次,等价{0,1})

+(匹配前一项1次或多次,等价{1,})

*(匹配前一项0次或多次,等价{0,})

非贪婪重复

如/a+/匹配1个或多个a,/a+?/只匹配一个a(前者为贪婪的,后者为非贪婪的)

选择、分组、引用

|(选择符,/a|b/可以匹配a或者b)

(...)(组合,定义子模式,\1表示第一个带括号的子表达式,嵌套的时候按左括号分/(['"])[^\1]*\1/当第一个为单引号就\1为单引号,其他同理)

(?:...)(只组合,不能用\1引用,即不记忆与该数组匹配的字符)

\n(与第n个分组第一次匹配的字符相匹配)

锚字符

^(匹配字符串开头,多行检索时匹配一行的开头)

$(匹配字符串结尾,多行检索时匹配一行的结尾)

\b(匹配一个词语的边界)

\B(匹配非词语边界)

(?=p)(正前向声明,要求接下来的字符都与模式p匹配)

(?!p)(反前向声明,要求接下来打得字符不与模式p匹配)

标记(在/符号外说明)

i(执行大小写不敏感匹配)

g(执行全局匹配,即找到所有匹配)

m(多行匹配)

用于匹配模式的String方法

seach(regExp)

该方法有一个参数,这个参数为正则表达式,如果不是正则表达式,也会用RegExp构造函数装换为正则表达式。seach()不支持全局检索,所以忽略标志g

replace(regExp,String)

该方法第一个参数为正则表达式,第二个参数为要替换的字符串。当有标志g时第二个参数会替换全部与正则表达式匹配的子串,如果没有标志g,则替换第一个与模式匹配的子串。如果第一个参数为字符串,则直接检索该字符串。

$n表示第n个子串。String=<aaa><bbb>;var x=String.replace(regExp,"<$1><$1>");则x的值为<aaa><aaa>。

match(regExp)

当有标志g时,该方法返回了包含匹配结果的数组。当没有标志g时,也是返回一个数组,array[1]则为第一个子串。

split(x)

把调用的字符串分解为一个子串数组,分隔符是参数,参数也可以使用正则表达式,如/\*,s\s*/,逗号左右有一个或多个空格

RegExp对象

构造函数RegExp(String,gim),第一个参数为正则表达式主体的字符串,注意转义字符的使用,第二个参数是正则表达式的标志,可省略。

RegExp对象方法

regExp.exec(String);

该方法与match()方法很类似,但是,不管加不加标志g,没有找到匹配则返回null,如果找到,该方法只返回第一个匹配的字符串。如果有加标志g,第二次调用exec时则从regExp.lastIndex所指示的字符位置开始检索,利用这个特点遍历所有匹配,则可以达到match()加标志g的结果,不过结果不像match()一样返回一个数组。

regExp.test(String),如果字符串包含正则表达式的一个匹配,则返回ture,当一个全局方法调用test()时,同样regExp.lastIndex设置为匹配之后的字符的位置,这样,test()方法也可以遍历。

RegExp实例属性(5个)

source 只读 正则表达式文本

global 只读的布尔值 说明是否有标志g

ignoreCase 只读的布尔值 说明是否有标志i

multiline 只读的布尔值 说明是否有标志m

lastIndex 可读写的整数

JavaScript 正则表达式的入门与使用的更多相关文章

  1. javascript 正则表达式 详细入门教程

    1.什么是正则表达式 定义: 一个用来搜索.匹配.处理一些符合特定语法规则的一个强大的字符串处理工具. 用途: 进行特定字符和字符串的搜索 替换字符串中指定的字符或字符串 验证字符串是否符合需求 2. ...

  2. JavaScript正则表达式详解(一)正则表达式入门

    JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望 ...

  3. 正则表达式入门教程&&经典Javascript正则表达式(share)

    前言 例子: ^.+@.+\\..+$ 这样的代码曾经多次把我自己给吓退过.可能很多人也是被这样的代码给吓跑的吧.继续阅读本文将让你也可以自由应用这样的代码. 正文 教程:正则表达式30分钟入门教程 ...

  4. 正则表达式入门教程&&经典Javascript正则表达式----share

    前言 例子: ^.+@.+\\..+$ 这样的代码曾经多次把我自己给吓退过.可能很多人也是被这样的代码给吓跑的吧.继续阅读本文将让你也可以自由应用这样的代码. 正文 教程:正则表达式30分钟入门教程 ...

  5. 正则表达式入门教程&&经典Javascript正则表达式

    前言 例子: ^.+@.+\\..+$ 这样的代码曾经多次把我自己给吓退过.可能很多人也是被这样的代码给吓跑的吧.继续阅读本文将让你也可以自由应用这样的代码. 正文 教程:正则表达式30分钟入门教程 ...

  6. javascript正则表达式入门先了解这些

    前言 此内容由学习<JavaScript正则表达式迷你书(1.1版)>整理而来(于2020年3月30日看完).此外还参考了MDN上关于Regex和String的相关内容,还有ECMAScr ...

  7. javascript正则表达式(RegExp)简述

    首先我们来思考以下两个个场景 我们使用window操作系统,有时候需要找一个文件,刚刚好这个文件我不知道放哪里去了,这个时候我们该怎么办呢? 我们使用word写论文的时候,不小心将"订价&q ...

  8. JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解

    二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...

  9. JavaScript 10分钟入门

    JavaScript 10分钟入门 随着公司内部技术分享(JS进阶)投票的失利,先译一篇不错的JS入门博文,方便不太了解JS的童鞋快速学习和掌握这门神奇的语言. 以下为译文,原文地址:http://w ...

随机推荐

  1. [洛谷P2774]方格取数问题

    题目大意:给你一个$n\times m$的方格,要求你从中选择一些数,其中没有相邻两个数,使得最后和最大 题解:网络流,最小割,发现相邻的两个点不可以同时选择,进行黑白染色,原点向黑点连一条容量为点权 ...

  2. 分享几款常用的API/文档浏览器

    1.Dash 支持平台:Mac  iOS 官网:https://kapeli.com/dash 2.Zeal 支持平台:Linux Windows 官网:https://zealdocs.org/ G ...

  3. AOJ.863 分书问题 (DFS)

    题意分析 现有n个人,n种书,给出每人对n种书的喜欢列表,求有多少种方案满足以下条件: 1.每个人都分得自己喜欢的书: 2.每个人分得书的种类各不相同,即所有种类的书均得到分配 1.采用生成测试法 生 ...

  4. B树,B+树,B*树简介

    B树(有些人也叫B-树) 是一种多路搜索树 : 1.定义任意非叶子结点最多只有M个儿子:且M>2: 2.根结点的儿子数为[2, M]: 3.除根结点以外的非叶子结点的儿子数为[M/2, M]: ...

  5. POJ1742 Coins(男人八题之一)

    前言 大名鼎鼎的男人八题,终于见识了... 题面 http://poj.org/problem?id=1742 分析 § 1 多重背包 这很显然是一个完全背包问题,考虑转移方程: DP[i][j]表示 ...

  6. 用ByteArrayOutputStream解决IO流乱码问题

    IO中用ByteArrayOutputStream解决乱码问题 --另一种解决乱码的方法 IO中另外一种防止乱码的方法:使用ByteArrayOutputStream在创建ByteArrayOutpu ...

  7. android源码了解dex加载流程

    源码版本:4.4.4_r1 http://www.cnblogs.com/lanrenxinxin/p/4712224.html http://wangzhixian.org/Others/DexCl ...

  8. BAT-Python面试题

    Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def fun(a): a = 2 fun(a) print(a) # 1 代码二: a = ...

  9. Apache 403 错误解决方法-让别人可以访问你的服务器(转)

    有一次做好了一个效果放在自己电脑的服务器上,让同学查看(同处于校园网中),却不知apache一直显示403 错误,对方没有权限访问,我知道这应该是配置文件httpd.conf中的问题,网上搜了一下其他 ...

  10. Codeforces Round #332 (Div. 2)B. Spongebob and Joke

    B. Spongebob and Joke time limit per test 2 seconds memory limit per test 256 megabytes input standa ...