通过例子学习正则中的常见语法(1)

  1. $num
    javascript var a = 'javascript'; var b = a.replace(/(java)(script)/gi, '$2-$1'); console.log(b);//script-java

    • 正则以/开始和结尾,中间为要匹配的表达式
    • g表示全局搜索,i表示忽略大小写,m表示多行匹配
    • $1$2表示第1个和第2个子表达式(用小括号包裹)匹配到的文本,如例子所见,$1java$2script
  2. $&
    javascript var a = 'javascript'; var b = a.replace(/a/gi, '$&-$&'); console.log(b);//ja-ava-ascript

    • $&表示匹配到的文本,即$&匹配到a
    • javascript中的a替换为a-a,所以最终结果为ja-ava-ascript
  3. $`
    javascript var a = 'javascript'; var b = a.replace(/(script)/gi, '$&-$`'); console.log(b);//javascript-java

    • $`表示匹配到的文本的左侧文本,即$`匹配到java
    • script替换为script-java,所以最终结果为javascript-java
  4. $'
    javascript var a = 'javascript'; var b = a.replace(/(java)/gi, '$&-$\''); console.log(b);//java-scriptscript

    • $'表示匹配到的文本的右侧文本,即$'匹配到script
    • java替换为java-scripr,所以结果为java-scriptscript
    • 注意:$&-$\',如果用'包裹结果,需要\ 转义,如果用"包裹结果,则不需要转义
  5. $$
    javascript var a = 'javascript'; var b = a.replace(/a/gi, '$$'); console.log(b);//j$v$script

    • $$表示对$进行转义输出
    • a替换为$
  6. replace
    ```javascript
    var a = 'this is a javascript text';
    var b = a.replace(/\b(\w)(\w*)\b/g, fn);
    console.log(b);//This Is A Javascript Text

    function fn($1, $2, $3) {
    return $2.toUpperCase() + $3;
    }
    ``*replace接受两个参数,第一个为正则表达式,第二个可以为文本,也可以为函数 *\b表示单词的分界线 *\w表示字母、数字、下划线或者汉字 *fn中共接收了三个参数 *$1表示整个正则表达式匹配到的文本,依次为thisisajavascripttext*$2表示第一个子表达式(\w)匹配到的文本,分别为tiajt*$3表示第二个子表达式(\w*)匹配到的文本,分别为hiss(空的内容)avascriptext*$2.toUpperCase()$2匹配到的文本转换为大写 * 结果This Is A Javascript Text`

  7. replacefn详细内容
    javascript var a = 'this is a javascript text'; var b = a.replace(/\b(\w)(\w*)\b/g, fn); console.log(b); //this-t-his-0-this is a javascript text& is-i-s-5-this is a javascript text& a-a--8-this is a javascript text& javascript-j-avascript-10-this is a javascript text& text-t-ext-21-this is a javascript text& function fn($1, $2, $3, $4, $5) { return $1 + '-' + $2 + '-' + $3 + '-' + $4 + '-' + $5 + '&'; }

    • 在例子6中介绍了$1, $2, $3,其实$2$3可以有多个,数量随正则中的子表达式变化,因为/\b(\w)(\w*)\b/中只有两个子表达式,所以只有$2$3
    • fn最后两个参数(不一定是$4$5),分别表示正则匹配到的文本($1)开始位置(如匹配到javascript$4就是javascript在整段文本中的开始位置10)和整个要匹配的文本(this is a javascript text
    • 根据以上分析,结果如下

JavaScript中正则的使用(1)的更多相关文章

  1. JavaScript中正则使用

    字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在.比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦, ...

  2. JavaScript 中正则匹配时结果不一致的问题

    创建示例项目 考察如下场景,我们有个输入框组件,输入时同时进行校验. interface IInputProps { label: string; } function Input({ label } ...

  3. JavaScript 中 正则替换 replace

    本文初步介绍 replace 在 js 中,我们常常会遇到 用来 解决开发中常会遇到的 问题的 知识总结, 如果你已经 非常熟悉,又可以绕道了. 定义和用法 replace() 方法用于在字符串中常用 ...

  4. javascript中正则动态替换为对象中的相应数据

    使用正则进行替换以下内容 var str = 'aKey={aValue}&bKey={bValue}' 使用以下对象数据,替换value var obj = { aValue: 1, bVa ...

  5. javascript中正则实现读取当前url中指定参数值方法。

    getQueryString:function(name) { var reg = new RegExp("(^|&)"+ name +"=([^&]*) ...

  6. Javascript中正则的 match、test、exec使用方法和区别

    总结: match 是str调用 test和exec是正则表达式调用 test只返回true或false, exec和match的结果是相同的,返回结果比较复杂

  7. JS中正则匹配的三个方法match exec test的用法

    javascript中正则匹配有3个方法,match,exec,test: match是字符串的一个方法,接收一个RegExp对象做为参数: match() 方法可在字符串内检索指定的值,或找到一个或 ...

  8. JavaScript与PHP中正则

    一.JavaScript 有个在线调试正则的工具,点击查看工具.下面的所有示例代码,都可以在codepen上查看到. 1.创建正则表达式 var re = /ab+c/; //方式一 正则表达式字面量 ...

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

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

随机推荐

  1. 转:UIView的sizeToFit与sizeThatFits

    UILabel经常用到的方法- (void)sizeToFit- (CGSize)sizeThatFits:(CGSize)size解释如下: sizeToFit会自动调用sizeThatFits方法 ...

  2. Codeforces Round #476 (Div. 2) [Thanks, Telegram!] C

    http://codeforces.com/contest/965/problem/C 题目大意:n个糖,k个人,每次最多只能拿M个糖,从第一个人开始拿,可以循环D次.问Arkady最多可以拿几块糖? ...

  3. HTTP请求方式及状态码

  4. 简易jQuery插件

    之前写过jQuery插件的笔记 如何用jQuery封装插件 我一直觉得前面讲了一大堆闭包和三种插件封装模式有点冗余,那篇笔记我直到记录到后面才发现这事情很简单,想来想去还是觉得网上的一些文章把事情搞复 ...

  5. Chip Factory(HDU5536 + 暴力 || 01字典树)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5536 题目: 题意: 对于给定的n个数,求出三个下标不同的数使得(si+sj)^sk最大. 思路: ...

  6. glut glew区别

    GLEW是一个跨平台的C++扩展库,基于OpenGL图形接口.使用OpenGL的朋友都知道,window目前只支持OpenGL1.1的涵数,但 OpenGL现在都发展到2.0以上了,要使用这些Open ...

  7. c++细节--section1

    1.register声明的变量为寄存器变量,因此没有地址,不能对它取地址操作. 2.[用错sizeof]当数组作为函数参数传递时,数组会退化为同类型的指针. 3.每个成员在成员初始化列表中只能出现一次 ...

  8. 20165227 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

    20165227 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:朱越 学号:20165227 指导教师:娄 ...

  9. Maven仓库国内镜像站

    感谢阿里巴巴,搭建并公开了Maven仓库的国内镜像站.话外:使用Maven的官方仓库真的是太slow了! 在<Maven Root>/conf/settings.xml中的<mirr ...

  10. go 流程控制

    if else 语句 基本语法 if condition { //do something } if condition { //do something } else if condition { ...