正则表达式中的转义问题

正则表达式是javascript学习中非常重要的一部分,它的主要作用是验证表单。

说到正则表达式,我们首先想到的是它的创建方式,正则表达式创建的方式有两种:字面量形式和RegExp构造函数。

首先说字面量形式:

创建方法:var expression= / pattern / flags ;

pattern(模式)部分可以是任何简单或复杂的正则表达式,可以包含字符类、限定符、分组、向前查找以及反向引用。

flags(标志)部分表明正则表达式的行为。其中g表示全局模式,i表示不区分大小写模式,m表示多行模式。

pattern中所有元字符都需要转义,因为元字符在正则表达式中都有一种或多种特殊的用途。元字符包括:( ) [ ] { } \ ^ $ | ? * . + / (”/“书中及参考资料没有提及,个人觉得应该算) 。转义的方式就是在元字符前加反斜杠”\“。

例如:

1 /*匹配字符串中所有“Web”实例*/
2 var pattern1=/Web/g;
3 /*匹配字符串中所有“Web+”实例*/
4 var pattern2=/Web\+/g;

然后说说RegExp构造函数:

创建方法:var expression=new RegExp("pattern","flags");

构造函数接受两个参数:要匹配的字符串模式、可选的标志字符串。两个参数的数据类型都是字符串,所以不能把字面量形式中的pattern传递给构造函数。RegExp的pattern中所有元字符都必须双重转义,那些已转义过的字符也如此。

例如:

 1 /*匹配字符串中所有“\”实例
 2 * 考虑方式1
 3 * 1、把“\”这个内容转化成字符串,因为单独的“\”在字符串中代表转义符,把它打印出来不会有任何东西,所以得到的字符串为“\\”。
 4 * 2、把得到的字符串变为正则表达式字符串,正则表达式中的首个“\”表示转义,所以最终得到的字符串为“\\\\”。
 5 * */
 6
 7 /*匹配字符串中所有“\”实例
 8  * 考虑方式2
 9  * 1、把“\”这个内容转化成字面量模式的正则表达式,得到的结果为“\\”。
10  * 2、把1中的正则表达式转化成字符串,结果为“\\\\”。
11  * */
12
13 //以下两行代码在控制台执行。
14 var pattern3=new RegExp("\\\\","g");
15 alert(pattern3.test("\\"));
时间: 2024-12-06 04:15:36

正则表达式中的转义问题的相关文章

【python】正则表达式中的转义问题

encode('string-escape') 解决 比如想匹配'\x0e\x0a'中的'\x'后的内容,这里希望把'\x0e'作为一个字符串,那么其中的\应该被转义. 未加转义的正则: p = '(?<=\x)[0-9A-Za-z]{2}' 直接这样写会报错,需要给\转义,于是变为 p = '(?<=\\x)[0-9A-Za-z]{2}' 但由于使用的时候,会先将p的内容转义,然后匹配,所以又变成了\x和原始数据匹配,又会出错.解决: p = '(?<=\\x)[0-9A-Za-z]{

正则表达式中问号等特殊字符的转义

在.NET Framework 开发人员指南 的 字符转义 一节 有这样一段话.除 .$ ^ { [ ( | ) * + ? \ 外,其他字符与自身匹配.但是其中并未注明这些字符应该匹配为什么字符.为了方便自己以后查阅,也为了方便网友搜索我就写在这里了.[Sipo] 点的转义:.  ==> \\u002E 美元符号的转义:$  ==> \\u0024 乘方符号的转义:^  ==> \\u005E 左大括号的转义:{  ==> \\u007B 左方括号的转义:[  ==> \\

正则表达式——字符组中的转义

??在正则表达式中,如果需要表示作为元字符的普通字符(比如*.?.(.等),就需要使用转义这一点不存在疑义.特殊的是,常见的元字符出现在字符组内部基本都不算元字符,也就是说,它们在字符组内部出现时,不需要转义. 原文地址:https://www.cnblogs.com/gaara0305/p/10102946.html

python 正则表达式中反斜杠(\)的麻烦和陷阱

这里是一点小心得:由于下面两个原因,在正则表达式中使用反斜杠就会产生了一个双重转换的问题.(1).python自身处理字符串时,反斜杠是用于转义字符 (2).正则表达式也使用反斜杠来转义字符     要匹配字符串中1个反斜杠应该怎么写正则表达式?"\\",这样行吗?试试就知道了,re模块抛异常了,因为在正则表达式中,"\\"就是一个反斜杠,对于正则表达式解析器来说,是一个转义字符,但是后面啥也没有,自然就报错了,"\\\"三个肯定是不行的,试试四

python&#160;正则表达式中反斜杠(\)的麻烦和陷阱&#160;(转)

这里是一点小心得:由于下面两个原因,在正则表达式中使用反斜杠就会产生了一个双重转换的问题.(1).python自身处理字符串时,反斜杠是用于转义字符 (2).正则表达式也使用反斜杠来转义字符     要匹配字符串中1个反斜杠应该怎么写正则表达式?"\\",这样行吗?试试就知道了,re模块抛异常了,因为在正则表达式中,"\\"就是一个反斜杠,对于正则表达式解析器来说,是一个转义字符,但是后面啥也没有,自然就报错了,"\\\"三个肯定是不行的,试试四

app.use 的作用 正则表达式中/ 表示什么 nodejs pm2 怎样安装 乱码怎么解决

1.express 框架中的app.use是什么作用? 手册上写着是: app.use([path], function)Use the given middleware function, with optional mount path, defaulting to "/". 就是引入一个所谓的中间件,其实就是用来再实际请求发生之前hack req和res对象来实现一些功能,比如果最简单的logger就是在res的end事件上添加监听写入一条日志记录,express使用connec

正则中需要转义的特殊字符小结

正则表达式中的特殊字符,就是一些有特殊含义的字符,如“*.txt”中的*,简单的说就是表示任何字符串的意思. 如果要查找文件名中有*的文件,则需要对*进行转义,即在其前加一个\.ls \*.txt.正则表达式有以下特殊字符.需要转义 特别字符 说明 $ 匹配输入字符串的结尾位置.如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n' 或 ‘\r'.要匹配 $ 字符本身,请使用 \$. ( ) 标记一个子表达式的开始和结束位置.子表达式可以获取供以后使用.要匹配这些字

计算机程序的思维逻辑 (89) - 正则表达式 (中)

上节介绍了正则表达式的语法,本节介绍相关的Java API. 正则表达式相关的类位于包java.util.regex下,有两个主要的类,一个是Pattern,另一个是Matcher.Pattern表示正则表达式对象,它与要处理的具体字符串无关.Matcher表示一个匹配,它将正则表达式应用于一个具体字符串,通过它对字符串进行处理. 字符串类String也是一个重要的类,我们在29节专门介绍过String,其中提到,它有一些方法,接受的参数不是普通的字符串,而是正则表达式.此外,正则表达式在Jav

app.use 的作用 正则表达式中/ 表示什么 nodejs pm2 怎样安装 乱码怎么解决

app.use 的作用 正则表达式中/ 表示什么 nodejs pm2 怎样安装 乱码怎么解决 时间:2017-05-23 00:18:43      阅读:16      评论:0      收藏:0      [点我收藏+] 1.express 框架中的app.use是什么作用? 手册上写着是: app.use([path], function)Use the given middleware function, with optional mount path, defaulting to