字符串方法


search(reg)

  1. search()用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串

  2. 方法返回第一个匹配结果index,查找不到返回-1

  3. search()不执行全局匹配,他将忽略标志g,并且总是从字符串的开始进行检索

例:
a1b1c1d1.search('1') // 1 a1b1c1d1.search(1) // 1 a1b1c1d1.search('10') // -1

match(reg)

  1. match()将检索字符串,以找到一个或多个与RegExp相匹配的文本
  2. RegExp是否具有标志g对结果影响很大

非全局调用 

  1. 如果RegExp没有标志g,那么match()方法就只能在字符串中执行一次匹配
  2. 如果没有找到任何匹配的文本,将返回null

  3. 否则它将返回一个数组,其中存放了与它找到的匹配文本有关的信息

返回数组的第一个元素是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本

除了常规的数组元素之外,返回的数组还含有两个对象属性

'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()

  1. 我们经常用split方法把字符串分割为字符数组 'abcd'.split(','); // ["a","b","c","d"]

  2. 在一些复杂的分割情况下我们可以使用正则表达式解决'a1b2c3d'.split(/\d/); // ["a","b","c","d"]

String.prototype.replace

  1. String.prototype.replace(str,replaceStr)

    例:
    "a1b".replace('1',2) "a2b"
  2. String.prototype.replace(reg,replaceStr)

    例:
    "a1b1c1".replace(/1/,2) "a2b1c1" 例:"a1b1c1".replace(/1/g,2) "a2b2c2"
  3. 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正则表达式(十三)的更多相关文章

  1. 初学JavaScript正则表达式(八)

    JavaScript正则贪婪模式与非贪婪模式 贪婪模式: 例: \d{3,6} 匹配数字3到6次(正则表达式默认为贪婪模式,即匹配最多次,失败即停) '12345678'.replace(/\d{3, ...

  2. 初学JavaScript正则表达式(十二)

    text / exec方法 text() var reg1 = /\w/; var reg2 = /\w/g; reg1.test('a') === true reg2.test('a') === t ...

  3. 初学JavaScript正则表达式(十一)

    JavaScript的对象属性 整理自慕课网教学 点此进入

  4. 初学JavaScript正则表达式(六)

    JavaScript预定义类 ab+数字+任意字符 ab[0-9][^\r\n] 等价于 ab\d. '@123@abc@'.replace(/@./g,'Q') Q23Qbc@ 将"@加任 ...

  5. 初学JavaScript正则表达式(四)

    字符类 [] 一般情况下正则表达式中一个字符对应字符串一个字符 可以使用元字符 [ ] 来构建一个简单的类        类泛指符合某些特征的对象 例: 'a1b1c1d1'.replace(/[ab ...

  6. 初学JavaScript正则表达式(三)

    正则表达式由两种基本的字符类型组成 原义文本字符 //a abc 1 元字符 元字符是有特使含义的非字母字符 * 匹配前面的子表达式零次或多次 + 匹配前面的子表达式一次或多次 ? 匹配前面的子表达式 ...

  7. 初学JavaScript正则表达式(二)

    正则表达式的实例化与标识符 字面量: var reg = /\bis\b/g // \b--字符边界 g全文搜索 查找单词为is的字符 He is a boy. IS He? 构造函数: var re ...

  8. 初学JavaScript正则表达式(十)

    前瞻与后顾 断言 === assert 符合断言为正向,不符合为负向 例 'a2*3'.replace(/\w(?=\d)/g,'x') ------- x2*3 看看'\d'前面是不是'\w',如果 ...

  9. 初学JavaScript正则表达式(九)

    分组:可以用 ( ) 来进行分组 一.Byron重复三次             Byron{3} --------- Byronnn 只是将紧挨着量词的字符重复            (Byron) ...

随机推荐

  1. DataPump遭遇ORA-06512&ORA-39080&ORA-01403错误案例

    最近使用数据泵(DataPump)比较多,遇到了奇奇怪怪的问题,似乎Apply了补丁PSU 10.2.0.5.180717后,DataPump的问题就格外多.如下所示: expdp system/xx ...

  2. 模拟超市付款 (if 多分支结构)

    """ 模拟超市付款: 商品单价 商品数量 键盘上输入商品单价,以及商品数量, 然后计算应付总额 计算总额 float 提示用户可以有4种付款方式 不同的付款方式有不同的 ...

  3. 读书笔记_python网络编程3(6)

    6.TLS/SSL 6.0. 传输层安全协议(TLS, Transport Layer Security)是如今web上应用最广泛的加密方法了,1999年成为互联网标准.前身是安全套接层(SSL, S ...

  4. 读书笔记_python网络编程3_(1)

    0.前言 代码目录: https://github.com/brandon-rhodes/fopnp/tree/m/py3 0.1.网络实验环境:理解客户端与服务器是如何通过网络进行通信的 每台机器通 ...

  5. 利用Flask中的werkzeug.security模块加密

    1.这种加密方式的原理:加密时混入一段"随机"字符串(盐值)再进行哈希加密.即使 密码相同,如果盐值不同,那么哈希值也是不一样的.现在网站开发中主要是运 用这种加密方法. 2.这个 ...

  6. sched_yield()和nanosleep()对进程调度的影响

    关键词:sched_yield().nanosleep()等等. sched_yield()主动放弃CPU执行权,nanosleep()是睡眠一段时间后再唤醒. 1. sched_yield()实现 ...

  7. 【oi模拟赛】长乐中学-不知道多少年

    改造二叉树 [题目描述] 小Y在学树论时看到了有关二叉树的介绍:在计算机科学中,二叉树是每个结点最多有两个子结点的有序树.通常子结点被称作"左孩子"和"右孩子" ...

  8. 【python爬虫】初识爬虫

    一.爬虫的定义 爬虫定义:程序或者脚本——自动的爬取万维网的数据的程序或者脚本. 二.爬虫可以解决的问题 1.解决冷启动问题. 2.搜索引擎的根基——通用爬虫. 3.帮助机器学习建立知识图谱. 4.制 ...

  9. CF1269A Equation

    题目链接 题意 要找两个合数,使他们两个的差为\(n\),\(n\)为题目给出的数 思路 我们可以枚举减数\(now\),判断一下是不是质数,如果是质数就让\(now++\),然后用一个数\(tot\ ...

  10. 趣谈Linux操作系统学习笔记:第二十一讲

    一.分段机制 1.分段机制的原理图 2.段选择子 3.段偏移量 例如,我们将上面的虚拟空间分成以下 4 个段,用 0-3 来编号.每个段在段表中有一个项,在物理空间中,段的排列如下图的右边所示. 4. ...