JavaScript 正则表达式的入门与使用
知道正则表达式已经很久了,粗略会看懂一些,不过以前没有系统的学习,最近在看《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 正则表达式的入门与使用的更多相关文章
- javascript 正则表达式 详细入门教程
1.什么是正则表达式 定义: 一个用来搜索.匹配.处理一些符合特定语法规则的一个强大的字符串处理工具. 用途: 进行特定字符和字符串的搜索 替换字符串中指定的字符或字符串 验证字符串是否符合需求 2. ...
- JavaScript正则表达式详解(一)正则表达式入门
JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望 ...
- 正则表达式入门教程&&经典Javascript正则表达式(share)
前言 例子: ^.+@.+\\..+$ 这样的代码曾经多次把我自己给吓退过.可能很多人也是被这样的代码给吓跑的吧.继续阅读本文将让你也可以自由应用这样的代码. 正文 教程:正则表达式30分钟入门教程 ...
- 正则表达式入门教程&&经典Javascript正则表达式----share
前言 例子: ^.+@.+\\..+$ 这样的代码曾经多次把我自己给吓退过.可能很多人也是被这样的代码给吓跑的吧.继续阅读本文将让你也可以自由应用这样的代码. 正文 教程:正则表达式30分钟入门教程 ...
- 正则表达式入门教程&&经典Javascript正则表达式
前言 例子: ^.+@.+\\..+$ 这样的代码曾经多次把我自己给吓退过.可能很多人也是被这样的代码给吓跑的吧.继续阅读本文将让你也可以自由应用这样的代码. 正文 教程:正则表达式30分钟入门教程 ...
- javascript正则表达式入门先了解这些
前言 此内容由学习<JavaScript正则表达式迷你书(1.1版)>整理而来(于2020年3月30日看完).此外还参考了MDN上关于Regex和String的相关内容,还有ECMAScr ...
- javascript正则表达式(RegExp)简述
首先我们来思考以下两个个场景 我们使用window操作系统,有时候需要找一个文件,刚刚好这个文件我不知道放哪里去了,这个时候我们该怎么办呢? 我们使用word写论文的时候,不小心将"订价&q ...
- JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解
二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...
- JavaScript 10分钟入门
JavaScript 10分钟入门 随着公司内部技术分享(JS进阶)投票的失利,先译一篇不错的JS入门博文,方便不太了解JS的童鞋快速学习和掌握这门神奇的语言. 以下为译文,原文地址:http://w ...
随机推荐
- bzoj 1207: [HNOI2004]打鼹鼠 (dp)
var n,m,i,j,ans:longint; x,y,time,f:..]of longint; begin readln(n,m); to m do readln(time[i],x[i],y[ ...
- C++中友元简介
本文基于<C++ Primer(第五版)>,纯属个人笔记整理.若有错误欢迎大家留言指出. 一.为什么要用友元和其缺点? 采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员 ...
- 洛谷 P2747 [USACO5.4]周游加拿大Canada Tour 解题报告
P2747 [USACO5.4]周游加拿大Canada Tour 题目描述 你赢得了一场航空公司举办的比赛,奖品是一张加拿大环游机票.旅行在这家航空公司开放的最西边的城市开始,然后一直自西向东旅行,直 ...
- UVA.129 Krypton Factor (搜索+暴力)
UVA.129 Krypton Factor (搜索+暴力) 题意分析 搜索的策略是:优先找长串,若长串不合法,则回溯,继续找到合法串,直到找到所求合法串的编号,输出即可. 注意的地方就是合法串的判断 ...
- CodeForces.5A Chat Server's Outgoing Traffic
Chat Server's Outgoing Traffic 点我挑战提目 考察点 模拟 字符串 Time Mem Len Lang 30 0 543 c++ 题意分析 给出类似一个群的即时通讯系统, ...
- 解决webstrom 输入法光标不跟随问题
参考博客地址 https://blog.csdn.net/wang414300980/article/details/79537875 原因是jdk版本问题,下载jdk jbsdk8u152b1036 ...
- angularJS入门小Demo2 【包含不用数据库而用data.json格式响应前台的ajax请求方式测试】
事件绑定: <html> <head> <title>angularJS入门小demo-5 事件指令</title> <script src=&q ...
- STL之三:deque用法详解
转载于:http://blog.csdn.net/longshengguoji/article/details/8519812 deque函数: deque容器为一个给定类型的元素进行线性处理,像向量 ...
- STM32 - 软件设置单片机重启
__set_FAULTMASK();//关闭总中断 NVIC_SystemReset();//请求单片机重启 执行NVIC_SystemReset()函数不允许被打断,所以关总中断
- Git 常见工作流
多种多样的工作流使得在项目中实施Git时变得难以选择.这份教程提供了一个出发点,调查企业团队最常见的Git工作流. 阅读的时候,请记住工作流应该是一种规范而不是金科玉律.我们希望向你展示所有工作流,让 ...