javascript正则表达式小技巧
2024-09-28 03:00:42
一、中括号[]里面的特殊字符是不用转义的,例如[/]、[.]、[*]、[?]、[+]都是可以直接匹配对应的字符\ . *?+。下面是测试结果:
所以,/[\d.]/这个正则表达式实际上是匹配数字字符或者字符".",作用等同于/[\d\.]/
二、match()、exec()和test()的区别
1. regexp.test()
test()
方法执行一个检索,用来查看正则表达式与指定的字符串是否匹配。返回 true
或 false
。
/in[a-z]/g.test("ing"); // true
/in[a-z]/g.test("string"); //true var reg = new RegExp("in[a-z]", "g");
reg.test("string"); // true
2.regexp.exec(string)
如果成功匹配,exec
方法返回一个数组,并且更新正则表达式对象的属性。返回的数组包括匹配的字符串作为第一个元素,紧接着一个元素对应一个成功匹配被捕获的字符串。
另外,返回的数组对象还包含index和input属性:
- index表示被匹配的字符串的第一个字符在源字符串中的位置。
- input表示源字符串。
var re = /in([a-z])in([a-z])/g;
var result = re.exec("stringina strinaing"); //["ingina", "g", "a"] result .index; //
result .input; // "stringina strinaing"
对象 | 属性/索引 | 描述 | 例子 |
result |
[0] |
上一次匹配到的字符 | ingina |
[1], ...[n ] |
括号中的分组捕获 |
|
|
index |
匹配到的字符位于原始字符串的基于0的索引值 | 3 |
|
input |
原始字符串 |
stringina strinaing |
|
re |
lastIndex |
下一次匹配开始的位置 | 9 |
ignoreCase |
是否使用了'i'标记使正则匹配忽略大小写 | false |
|
global |
是否使用了'g'标记来进行全局的匹配. | true |
|
multiline |
是否使用了' |
false |
|
source |
正则模式的字符串 | in([a-z])in([a-z]) |
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec
3. string.match(regexp)
match()返回一个被指定正则匹配到的匹配项数组
如果正则表达式没有 g
标志,返回和 RegExp.exec(str)
相同的结果。
如果正则表达式包含 g
标志,则该方法返回一个包含所有匹配结果的数组。如果没有匹配到,则返回 null
。
var reg = new RegExp('in([a-z])in([a-z])');
var result = "stringinastringinb".match(reg); // ["ingina", "g", "a"]
result.index; //
result.input; // "stringinastringinb" var reg= new RegExp('in([a-z])in([a-z])','g');
var result ="stringinastringinb".match(reg); // ["ingina", "inginb"]
result.index; // undefined
result.input; // undefined
PS:另外要注意的是lastIndex只对exec()和test()方法起作用,string.match(regexp)是不会影响regexp这个正则的lastIndex属性的。
最新文章
- js 中关联数组
- diary and html 文本颜色编辑,行距和其它编辑总汇
- 使用JS脚本获取url中的参数
- wp8 入门到精通 测量代码执行时间
- python知识点记录(一):
- Codeforces Good Bye 2015 D. New Year and Ancient Prophecy 后缀数组 树状数组 dp
- 单源最短路径—Bellman-Ford和Dijkstra算法
- TPL异步并行编程之取消任务
- luogu P3398 仓鼠找sugar [LCA]
- Java中参数传递问题
- 注册表操作(VC_Win32)
- Web自动化之Headless Chrome测试框架集成
- angular-cli学习笔记 快速创建代码模板
- 【Spark篇】---Spark资源调度和任务调度
- Java AQS 概述
- Edge BUG欣赏之四摸鸡与IP地址的恩怨
- DotNetty网络通信框架学习之初识Netty
- linux mint 安装 opencv2.4
- Installing Office Online Server for SharePoint 2016
- Multi-Nim游戏结论不变证明
热门文章
- zoj 1002 Fire Net (二分匹配)
- [转]busybox登陆后没要求输入密码的解决办法
- 「JOISC 2015 Day 1」卡片占卜
- java.net.BindException: Address already in use: JVM_Bind <;null>;:8080错误
- Codeforces Round #328 (Div. 2) B
- AirPlay、DLNA、Miracast三大无线技术介绍
- Linux下的ACL
- windows 下 mySQL 镜像安装文件下载
- dpdk 代码分析一 : 内存初始化
- ubuntu安装ftp server并匿名访问