我们首先来看如下代码,在浏览器中输出的是什么?

// 在浏览器中输出的
console.log('\\'); // 输出 \
console.log('\\\\'); // 输出 \\

一:js正则直接量语法对 反斜杠的含义

1.1  \. 一个反斜杠加点号(.) 

var reg1 = /^\.$/g;
console.log(reg1.test('.')); // 输出 true, 因为 \. 是对元字符.进行转义,因此匹配字符串中的.
console.log(reg1.test('a')); // 输出false \. 转义后只能匹配字符串中的. ,不再是元字符匹配任意单个字符了

1.2  \\.  两个反斜杠加 (.)

在js正则表达式中,两个反斜杠加点号(.), 两个反斜杠会原样输出 \\ 字符串。元字符 . 匹配任意字符。

var reg2 = /^\\.$/g;
console.log(reg2.test('\a')); // false
console.log(reg2.test('\\a')); // true
console.log(reg2.test('a')); // false
console.log(reg2.test('\\ab')); // false
console.log(reg2.test('\\.')); // true

1.3  \\\. 三个反斜杠和点号(.)

在js正则表达式中,三个反斜杠和 . ,前两个反斜杠匹配两个反斜杠,后面的 \. 是对元字符.号进行转义,因此只能匹配字符串中的 . 号,不能匹配任意一个字符。

var reg3 = /^\\\.$/g;
console.log(reg3.test('\a')); // false
console.log(reg3.test('\\.')); // true
console.log(reg3.test('a')); // false
console.log(reg3.test('\\a')); // false

1.4 \\\\. 四个反斜杠加点号(.)

在js正则表达式中,四个反斜杠匹配四个反斜杠,然后后面的点号是匹配任意的字符,除点之外。

var reg4 = /^\\\\.$/g;

console.log(reg4.test('\\a')); // false
console.log(reg4.test('\\\.')); // false
console.log(reg4.test('\\\a')); // false
console.log(reg4.test('\\\\a')); // true
console.log(reg4.test('\\\\.')); // false
console.log(reg4.test('\\aa')); // false

2. JS中RegExp对象对反斜杠的含义

2.1 两个反斜杠加点号(.)

两个反斜杠加点的含义是:全局匹配字符串中带有点号的。找到的话,就返回true,否则的话,返回false, 首先两个反斜杠在正则 RegExp,返回一个反斜杠 \.

因此一个 反斜杠 \. 就是对元字符 . 进行转义。因此只能匹配 . 号了。

如下代码:

var reg11 = new RegExp('\\.', 'g');

console.log(reg11); // 输出 /\./g

console.log(reg11.test('.')); // true
console.log(reg11.test('\.')); // false
console.log(reg11.test('\a')); // false
console.log(reg11.test('.a')); // true
console.log(reg11.test('n.a')); // true

2.2 三个反斜杠加点号(.)

三个反斜杠和两个反斜杠的含义一样的。

var reg12 = new RegExp('\\\.', 'g');

console.log(reg12); // 输出 /\./g
console.log(reg12.test('.')); // true
console.log(reg12.test('\.')); // false
console.log(reg12.test('\a')); // false
console.log(reg12.test('.a')); // true
console.log(reg12.test('n.a')); // true

2.3 四个反斜杠加点号(.)

四个反斜杠加点号的含义是:在RegExp对象后,会返回 /\\./g, 然后是匹配字符串 \\ , 点号(.) 是元字符匹配任意的字符。

var reg12 = new RegExp('\\\\.', 'g');

console.log(reg12); // 输出 /\\./g
console.log(reg12.test('.')); // false
console.log(reg12.test('\.')); // false
console.log(reg12.test('\a')); // false
console.log(reg12.test('.a')); // false
console.log(reg12.test('n.a')); // false console.log(reg12.test('\\a')); // true
console.log(reg12.test('\\aaaa')); // false console.log(reg12.test('\\.')); // true

JS正则四个反斜杠的含义的更多相关文章

  1. JS中处理单个反斜杠(即转义字符的处理)

    问题来源:在表单的<input>标签中对输入的字符串进行大写转换.一不小心输入了反斜杠 \ 如下图所示: 输入 chn\  的时候,在  IE8  下弹出一个js错误.(在实际的项目的表单 ...

  2. maven dependency:tree中反斜杠的含义

    摘自:http://www.708luo.com/posts/2013/11/maven-dependency-slash-mark/ 一个mvn dependency:tree命令执行的输出如下: ...

  3. python 3.3.3 字面量,正则,反斜杠和原始字符串

    两个不起眼但是比较重要的设定 Python str类型的字面量解释器 当反斜杠及其紧接字符无法构成一个具有特殊含义的序列('recognized escape sequences')时,Python选 ...

  4. JAVA正则表达式中如何匹配反斜杠 \

    有时候我们需要匹配反斜杠,你可能会把对应的正则表达式写成 "\\" 然后可能会有如下输出: Exception in thread "main" java.ut ...

  5. Mysql 中 like 查询存在反斜杠的解决办法

    如 要查询   %\ABC\% 应该这样写, 写成四个反斜杠 like '%\\\\ABC\\\\%'

  6. Linux下Shell脚本字符串单引号、双引号、反引号、反斜杠的作用和区别

    一.单引号 str='this is a string' 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的: 单引号字串中不能出现单引号(对单引号使用转义符后也不行) ...

  7. JS 提交反斜杠\替换成正斜杠/

    js将字符串中所有反斜杠\替换成正斜杠/ 区分正斜杠与反斜杠: 正斜杠:http://.http紧跟着的斜杠,离手输入最近的斜杠,shift中间斜杠.45度角斜杠.正斜杠不需要转义 反斜杠:回车与空格 ...

  8. js 反斜杠 处理

    var t = jsonstr.replace(/\\/g,"\\\\\\\\"); --\\ 表示 代码 输出 \' 单引号 \" 双引号 \& 和号 \\ 反 ...

  9. encodeURIComponent编码反斜杠 \ (正则匹配)

    记录一个小bug... 前言废话: 1. 功能需求:修改输入框的内容,获取字符串传给后端保存. 2. bug历程:刚开始直接获取value值传过去.后来测试发现%&这些特殊字符无法传递后,在前 ...

随机推荐

  1. leetcode — interleaving-string

    /** * Source : https://oj.leetcode.com/problems/interleaving-string/ * * * Given s1, s2, s3, find wh ...

  2. PC逆向之代码还原技术,第一讲基本数据类型在内存中的表现形式.浮点,指针寻址公式

    目录 代码还原技术 一丶简介代码还原 二丶代码还原中的数据类型表现形式 1.整数类型 2.无符号整数 3.有符号整数 4.浮点数数据类型 5.浮点编码 4.Double类型解析. 三丶浮点汇编 1.浮 ...

  3. Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字

    Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字 一丶Java中包的机制 首先包其实就是个文件夹.作用就是管理类. Java中每次定义一个类的时候.通过Java编译之后.都会生 ...

  4. ES6躬行记(20)——类

    ES6正式将类(Class)的概念在语法层面标准化,今后不必再用构造函数模拟类的行为.而ES6引入的类本质上只是个语法糖(即代码更为简洁.语义更为清晰),其大部分功能(例如继承.封装和复用等)均可在E ...

  5. [十五]java.math包简介,RoundingMode与MathContext

    java.math包提供了java中的数学类 包括基本的浮点库.复杂运算以及任意精度的数据运算   '可以看得到,主要包括三个类一个枚举 BigDecimal和BigInteger接下来会详细介绍 先 ...

  6. MVC Scaffolding SmartCode-Engine 更新

    概述 通过扩展visual studio.net scaffolding组件,添加了一套功能完善的代码模板,包括Controller,Model,View,Businessd等各种功能的代码,配合En ...

  7. 痞子衡嵌入式:常用的数据差错控制技术(1)- 重复校验(Repetition Code)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是嵌入式里数据差错控制技术-重复校验. 在嵌入式应用里,除了最核心的数据处理外,我们还会经常和数据传输打交道.数据传输需要硬件传输接口的支持 ...

  8. Perl IO:操作系统层次的IO

    sysopen() open()和sysopen()都打开文件句柄,open()是比较高层次的打开文件句柄,sysopen()相对要底层一点.但它们打开的文件句柄并没有区别,只不过sysopen()有 ...

  9. win10下rdlc报表在vs(visual studio)中中文显示小方块的批量处理解决方法

    在网上找vs中rdlc报表显示中文时显示小方块的解决方案,无外就是修改文本框的字体属性.但是对于维护已有的rdlc报表时,有中文的地方(此时都显示了小方块)会很多,再一个一个设置实在太麻烦.所以自己花 ...

  10. Java集合类:"随机访问" 的RandomAccess接口

    引出RandomAccess接口 如果我们用Java做开发的话,最常用的容器之一就是List集合了,而List集合中用的较多的就是ArrayList 和 LinkedList 两个类,这两者也常被用来 ...