初学JavaScript正则表达式(十三)
字符串方法
search(reg)
search()用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串
方法返回第一个匹配结果index,查找不到返回-1
search()不执行全局匹配,他将忽略标志g,并且总是从字符串的开始进行检索
例:
a1b1c1d1.search('1') // 1
a1b1c1d1.search(1) // 1
a1b1c1d1.search('10') // -1
match(reg)
- match()将检索字符串,以找到一个或多个与RegExp相匹配的文本
RegExp是否具有标志g对结果影响很大
非全局调用
- 如果RegExp没有标志g,那么match()方法就只能在字符串中执行一次匹配
如果没有找到任何匹配的文本,将返回null
否则它将返回一个数组,其中存放了与它找到的匹配文本有关的信息
返回数组的第一个元素是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本
除了常规的数组元素之外,返回的数组还含有两个对象属性
'index'声明匹配的文本的起始字符在字符串中的位置
'input'声明对'stringObject'的引用
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
全局调用
如果RegExp具有标志g,那么match()方法将执行全局检索,找到字符串中的所有匹配的子字符串
没有找到任何匹配的子串,则返回null
如果找到了一个或多个匹配子串,则返回一个数组
数组元素中存放的是字符串中所有的匹配子串,而且也没有index属性或input属性
var reg3 = /\d(\w)\d/;
var reg4 = /\d(\w)\d/g;
var ts = '$1a2b3c4d5e';
var ret = ts.match(reg3);
console.log(ret); // ["1a2","a"]
console.log(ret.index + '\t' + reg3.lastIndex); // "1 0" 非全局调用lastIndex不生效
var ret = ts.match(reg4);
console.log(ret); // ["1a2","3c4"]
console.log(ret.index + '\t' + reg4.lastIndex); // "undefined 0"
split()
我们经常用split方法把字符串分割为字符数组 'abcd'.split(','); // ["a","b","c","d"]
在一些复杂的分割情况下我们可以使用正则表达式解决'a1b2c3d'.split(/\d/); // ["a","b","c","d"]
String.prototype.replace
String.prototype.replace(str,replaceStr)
例:
"a1b".replace('1',2) "a2b"String.prototype.replace(reg,replaceStr)
例:
"a1b1c1".replace(/1/,2) "a2b1c1" 例:"a1b1c1".replace(/1/g,2) "a2b2c2"String.prototype.replace(reg,function)
function会在每次匹配替换的时候调用,有四个参数 1、匹配字符串 2、正则表达式分组内容,没有分组则没有该参数</li> 3、匹配项在该字符串中的index</li> 4、原字符串</li>
例:'a1b2c3d4e5' -------- 'a2b3c4d5e6' 'a1b2c3d4e5'.replace(/\d/g,function(match,index,origin){ console.log(index); // 1 3 5 7 9 return parenInt(match) + 1; // 'a2b3c4d5e6' });
例:'a1b2c3d4e5' -------- 'a12c34e5' 'a1b2c3d4e5'.replace(/(\d)(\w)(\d)/g,function(match,group1,group2,group3,index,origin){ console.log(match); // "1b2" "3d4" return group1 + group3; // 'a12c34e5' });
整理自慕课网教学 点此进入
初学JavaScript正则表达式(十三)的更多相关文章
- 初学JavaScript正则表达式(八)
JavaScript正则贪婪模式与非贪婪模式 贪婪模式: 例: \d{3,6} 匹配数字3到6次(正则表达式默认为贪婪模式,即匹配最多次,失败即停) '12345678'.replace(/\d{3, ...
- 初学JavaScript正则表达式(十二)
text / exec方法 text() var reg1 = /\w/; var reg2 = /\w/g; reg1.test('a') === true reg2.test('a') === t ...
- 初学JavaScript正则表达式(十一)
JavaScript的对象属性 整理自慕课网教学 点此进入
- 初学JavaScript正则表达式(六)
JavaScript预定义类 ab+数字+任意字符 ab[0-9][^\r\n] 等价于 ab\d. '@123@abc@'.replace(/@./g,'Q') Q23Qbc@ 将"@加任 ...
- 初学JavaScript正则表达式(四)
字符类 [] 一般情况下正则表达式中一个字符对应字符串一个字符 可以使用元字符 [ ] 来构建一个简单的类 类泛指符合某些特征的对象 例: 'a1b1c1d1'.replace(/[ab ...
- 初学JavaScript正则表达式(三)
正则表达式由两种基本的字符类型组成 原义文本字符 //a abc 1 元字符 元字符是有特使含义的非字母字符 * 匹配前面的子表达式零次或多次 + 匹配前面的子表达式一次或多次 ? 匹配前面的子表达式 ...
- 初学JavaScript正则表达式(二)
正则表达式的实例化与标识符 字面量: var reg = /\bis\b/g // \b--字符边界 g全文搜索 查找单词为is的字符 He is a boy. IS He? 构造函数: var re ...
- 初学JavaScript正则表达式(十)
前瞻与后顾 断言 === assert 符合断言为正向,不符合为负向 例 'a2*3'.replace(/\w(?=\d)/g,'x') ------- x2*3 看看'\d'前面是不是'\w',如果 ...
- 初学JavaScript正则表达式(九)
分组:可以用 ( ) 来进行分组 一.Byron重复三次 Byron{3} --------- Byronnn 只是将紧挨着量词的字符重复 (Byron) ...
随机推荐
- Django使用xadmin集成富文本编辑器Ueditor(方法二)
一.xadmin的安装与配置1.安装xadmin,其中第一种在python3中安装不成功,推荐第二种或者第三种 方式一:pip install xadmin 方式二:pip install git+g ...
- linux相关(一)
一.调整xshell终端显示的最大行数 1.文件 -> 属性 -> 终端,如下图 2.调整缓冲区大小的行数,确定即可,如下图: 注意:此方法只是修改了连接该主机时的显示行数,其他主机的还是 ...
- Python 3 线程模型,进程模型记录
最近需要使用 python3 多线程处理大型数据,顺道探究了一下,python3 的线程模型的情况,下面进行简要记录: 多线程运行的优点: 使用线程可以把程序中占用时间较长的任务放到后台去处理: 用户 ...
- Linux 打开端口方法
关闭防火墙:service iptables stop 开启防火墙:service iptables start 防火墙状态:service iptables status 永久关闭:chkconfi ...
- 《Web Development with Go》两个Middleware执行顺序
也加了如果有认证时的执行流程: 一个错误, 一个正确. package main import ( "fmt" "log" "net/http&quo ...
- 2019-2020-1 20199305《Linux内核原理与分析》第二周作业
C程序的反汇编 (一)实验截图 复制所需要的C程序到"剪切板" 在虚拟机环境下粘贴过来 接下来进行反汇编,通过输入gcc -S -o main.s main.c -m32得到32位 ...
- 【使用篇二】SpringBoot使用JdbcTemplate操作数据库(12)
Spring对数据库的操作在jdbc上面做了深层次的封装,提供了JdbcTemplate模板. 在SpringBoot使用JdbcTemplate很简单: 引入数据库驱动包(mysql或oracle) ...
- 洛谷 P4017 最大食物链计数
洛谷 P4017 最大食物链计数 洛谷传送门 题目背景 你知道食物链吗?Delia生物考试的时候,数食物链条数的题目全都错了,因为她总是重复数了几条或漏掉了几条.于是她来就来求助你,然而你也不会啊!写 ...
- C++ int型负数除法取余问题
1:关于除法,不管是正数还是负数都是向0取整的:10/4 = 2,10/(-4) = -2 2:负数取余,通过取模来判定 |小| % |大| = |小| 符号同前 |大| % |小| = |余| ...
- 第05组 Beta冲刺(4/4)
第05组 Beta冲刺(4/4) 队名:天码行空 组长博客连接 作业博客连接 团队燃尽图(共享): GitHub当日代码/文档签入记录展示(共享): 组员情况: 组员1:卢欢(组长) 过去两天完成了哪 ...