范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

js正则表达式

  js正则表达式中有很多特殊的字符可能有些人并不知道是什么含义,下面我们就来具体介绍一下。
  js正则表达式的特殊字符
  js正则表达式字符 含意
  \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。
  -或-
  对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*"。
  ^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a"
  $ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A"
  * 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa
  + 匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa
  ? 匹配前面元字符0次或1次,/ba*/将匹配b,ba
  (x) 匹配x保存x在名为$1...$9的变量中
  x|y 匹配x或y
  {n} 精确匹配n次
  {n,} 匹配n次以上
  {n,m} 匹配n-m次
  [xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符)
  [^xyz] 不匹配这个集合中的任何一个字符
  [\b] 匹配一个退格符
  \b 匹配一个单词的边界
  \B 匹配一个单词的非边界
  \cX 这儿,X是一个控制符,/\cM/匹配Ctrl-M
  \d 匹配一个字数字符,/\d/ = /[0-9]/
  \D 匹配一个非字数字符,/\D/ = /[^0-9]/
  \n 匹配一个换行符
  \r 匹配一个回车符
  \s 匹配一个空白字符,包括\n,\r,\f,\t,\v等
  \S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/
  \t 匹配一个制表符
  \v 匹配一个重直制表符
  \w 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[\w]匹配"$5.98"中的5,等于[a-zA-Z0-9]
  \W 匹配一个不可以组成单词的字符,如[\W]匹配"$5.98"中的$,等于[^a-zA-Z0-9]。
  用re = new RegExp("pattern",["flags"]) 的方式比较好
  pattern : 正则表达式
  flags: g (全文查找出现的所有 pattern)
  i (忽略大小写)
  m (多行查找)
  vaScript动态正则表达式问题
  请问正则表达式可以动态生成吗?
  例如JavaScript中:
  var str = "strTemp";
  要生成:
  var re = /strTemp/;
  如果是字符连接:
  var re = "/" + str + "/"即可
  但是要生成表达式,可以实现吗?怎样实现?
  正则表达式是一个描述字符模式的对象。
  JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法.
  在JavaScript中,正则表达式是由一个RegExp对象表示的.当然,可以使用一个RegExp()构造函数来创建RegExp对象,
  也可以用JavaScript 1.2中的新添加的一个特殊语法来创建RegExp对象.就像字符串直接量被定义为包含在引号内的字符一样,
  正则表达式直接量也被定义为包含在一对斜杠(/)之间的字符.所以,JavaScript可能会包含如下的代码:
  var pattern = /s$/;
  这行代码创建一个新的RegExp对象,并将它赋给变量parttern.这个特殊的RegExp对象和所有以字母"s"结尾的字符串都匹配.用RegExp()也可以定义
  一个等价的正则表达式,代码如下:
  var pattern = new RegExp("s$");
  无论是用正则表达式直接量还是用构造函数RegExp(),创建一个RegExp对象都是比较容易的.较为困难的任务是用正则表达式语法来描述字符的模式.
  JavaScript采用的是Perl语言正则表达式语法的一个相当完整的子集.
  正则表达式的模式规范是由一系列字符构成的.大多数字符(包括所有字母数字字符)描述的都是按照字面意思进行匹配的字符.这样说来,正则表达式/java/就和所有包含子串 "java" 的字符串相匹配.虽然正则表达式中的其它字符不是按照字面意思进行匹配的,但它们都具有特殊的意义.正则表达式 /s$/ 包含两个字符. 第一个特殊字符 "s" 是按照字面意思与自身相匹配.第二个字符 "$" 是一个特殊字符,它所匹配的是字符串的结尾.所以正则表达式 /s$/ 匹配的就是以字母 "s" 结尾的字符串.
  1.直接量字符
  我们已经发现了,在正则表达式中所有的字母字符和数字都是按照字面意思与自身相匹配的.JavaScript的正则表达式还通过以反斜杠(\)开头的转义序列支持某些非字母字符.例如,序列 "\n" 在字符串中匹配的是一个直接量换行符.在正则表达式中,许多标点符号都有特殊的含义.下面是这些字符和它们的含义:
  正则表达式的直接量字符
  字符 匹配
  字母数字字符 自身
  \ f 换页符
  \ n 换行符
  \ r 回车
  \ t 制表符
  \ v 垂直制表符
  \ / 一个 / 直接量
  \ \ 一个 \ 直接量
  \ . 一个 . 直接量
  \ * 一个 * 直接量
  \ + 一个 + 直接量
  \ ? 一个 ? 直接量
  \ | 一个 | 直接量
  \ ( 一个 ( 直接量
  \ ) 一个 ) 直接量
  \ [ 一个 [ 直接量
  \ ] 一个 ] 直接量
  \ { 一个 { 直接量
  \ } 一个 } 直接量
  \ XXX 由十进制数 XXX 指 定的ASCII码字符
  \ Xnn 由十六进制数 nn 指定的ASCII码字符
  \ cX 控制字符^X. 例如, \cI等价于 \t, \cJ等价于 \n
  如果想在正则表达式中使用特殊的标点符号,必须在它们之前加上一个 "\" .
  2.字符类
  将单独的直接符放进中括号内就可以组合成字符类.一个字符类和它所包含的任何一个字符都匹配,所以正则表达式 / [abc] / 和字母 "a" , "b" , "c" 中的任何一个都匹配.另外还可以定义否定字符类,这些类匹配的是除那些包含在中括号之内的字符外的所有字符.定义否定字符尖时,要将一个 ^ 符号作为从左中括号算起的第一个字符.正则表达式的集合是 / [a-zA-z0-9] / .
  由于某些字符类非常常用,所以JavaScript的正则表达式语法包含一些特殊字符和转义序列来表示这些常用的类.例如, \s 匹配的是空格符,制表符和其它空白符, \s 匹配的则是空白符之外的任何字符.
  正则表灰式的字符类
  字符 匹配
  [...] 位于括号之内的任意字符
  [^...] 不在括号之中的任意字符
  . 除了换行符之外的任意字符,等价于[^\n]
  \w 任何单字字符, 等价于[a-zA-Z0-9]
  \W 任何非单字字符,等价于[^a-zA-Z0-9]
  \s 任何空白符,等价于[\ t \ n \ r \ f \ v]
  \S 任何非空白符,等价于[^\ t \ n \ r \ f \ v]
  \d 任何数字,等价于[0-9]
  \D 除了数字之外的任何字符,等价于[^0-9]
  [\b] 一个退格直接量(特例)
  3.复制
  用以上的正则表式的语法,可以把两位数描述成 / \ d \ d /,把四位数描述成 / \d \ d \ d \ d /.但我们还没有一种方法可以用来描述具有任意多数位的数字或者是一个字符串.这个串由三个字符以及跟随在字母之后的一位数字构成.这些复杂的模式使用的正则表达式语法指定了该表达式中每个元素要重复出现的次数.
  指定复制的字符总是出现在它们所作用的模式后面.由于某种复制类型相当常用.所以有一些特殊的字符专门用于表示它们.例如: +号匹配的就是复制前一模式一次或多次的模式.下面的表列出了复制语法.先看一个例子:
  /\d{2, 4}/ //匹配2到4间的数字.
  /\w{3} \d?/ //匹配三个单字字符和一个任意的数字.
  /\s+java\s+/ //匹配字符串"java" ,并且该串前后可以有一个或多个空格.
  /[^"] * / //匹配零个或多个非引号字符.
  正则表达式的复制字符
  字符 含义
  {n, m} 匹配前一项至少n次,但是不能超过m次
  {n, } 匹配前一项n次,或者多次
  {n} 匹配前一项恰好n次
  ? 匹配前一项0次或1次,也就是说前一项是可选的. 等价于 {0, 1}
  + 匹配前一项1次或多次,等价于{1,}
  * 匹配前一项0次或多次.等价于{0,}
  4.选择,分组和引用
  正则表达式的语法还包括指定选择项,对子表达式分组和引用前一子表达式的特殊字符.字符| 用于分隔供选择的字符.例如: /ab|cd|ef/ 匹配的是字符串 "ab",或者是字符串 "cd",又或者 "ef". /\d{3}|[a-z]{4}/ 匹配的是要么是一个三位数,要么是四个小写字母.在正则表达式中括号具有几种作用.它的主要作用是把单独的项目分组成子表达式,以便可以像处理一个独立的单元那种用 *、+或? 来处理那些项目.例如: /java(script) ?/ 匹配的是字符串 "java",其后既可以有 "script",也可以没有. /
  (ab|cd) + |ef) / 匹配的既可以是字符串 "ef",也可以是字符串"ab" 或者 "cd" 的一次或多次重复.
  在正则表达式中,括号的第二个用途是在完整的模式中定义子模式。当一个正则表达式成功地和目标字符串相匹配时,可以从目标串中抽出和括号中的子模式相匹配的部分.例如,假定我们正在检索的模式是一个或多个字母后面跟随一位或多位数字,那么我们可以使用模式 / [a-z] + \ d+/.但是由于假定我们真正关心的是每个匹配尾部的数字,那么如果我们将模式的数字部分放在括号中 (/ [a-z] + (\d+)/) ,我们就可以从所检索到的任何匹配中抽取数字了,之后我们会对此进行解析的.
  代括号的子表达式的另一个用途是,允许我们在同一正则表达式的后面引用前面的子表达式.这是通过在字符串 \ 后加一位或多位数字来实现的.数字指的是代括号的子表达式在正则表达式中的位置.例如: \1 引用的是第一个代括号的子表达式. \3 引用的是第三个代括号的子表达式.注意,由于子表达式可以嵌套在其它子表达式中,
  所以它的位置是被计数的左括号的位置.
  例如:在下面的正则表达式被指定为 \2:
  /([Jj]ava([Ss]cript)) \sis \s (fun\w*) /
  对正则表达式中前一子表达式的引用所指定的并不是那个子表达式的模式,而是与那个模式相匹配的文本.这样,引用就不只是帮助你输入正则表达式的重复部分的快
  捷方式了,它还实施了一条规约,那就是一个字符串各个分离的部分包含的是完全相同的字符.例如:下面的正则表达式匹配的就是位于单引号或双引号之内的所有字符.但是,它要求开始和结束的引号匹配(例如两个都是双引号或者都是单引号):
  /[' "] [^ ' "]*[' "]/
  如果要求开始和结束的引号匹配,我们可以使用如下的引用:
  /( [' "] ) [^ ' "] * \1/
  \1匹配的是第一个代括号的子表达式所匹配的模式.在这个例子中,它实施了一种规约,那就是开始的引号必须和结束的引号相匹配.注意,如果反斜杠后跟随的数字比代括号的子表达式数多,那么它就会被解析为一个十进制的转义序列,而不是一个引用.你可以坚持使用完整的三个字符来表示转义序列,这们就可以避免混淆了.例如, 使用 \044,而不是\44.下面是正则表达式的选择、分组和引用字符:
  字符 含义
  | 选择.匹配的要么是该符号左边的子表达式,要么它右边的子表达式
  (...) 分组.将几个项目分为一个单元.这个单元可由 *、+、?和|等符号使用,而且还可以记住和这个组匹配的字符以供此后引
  用使用
  \n 和第n个分组所匹配的字符相匹配.分组是括号中的子表达式(可能是嵌套的).分组号是从左到右计数的左括号数
  5.指定匹配的位置
  我们已经看到了,一个正则表达式中的许多元素才能够匹配字符串的一个字符.例如: \s 匹配的只是一个空白符.还有一些正则表达式的元素匹配的是字符之间宽度为0的空间,而不是实际的字符例如: \b 匹配的是一个词语的边界,也就是处于一个/w字字符和一个\w非字字符之间的边界.像\b 这样的字符并不指定任何一个匹配了的字符串中的字符,它们指定的是匹配所发生的合法位置.有时我们称这些元素为正则表达式的锚.因为它们将模式定位在检索字符串中的一个特定位置.最常用的锚元素是 ^, 它使模式依赖于字符串的开头,而锚元素$则使模式定位在字符串的末尾.
  例如:要匹配词 "javascript" ,我们可以使用正则表达式 /^ javascript $/. 如果我们想检索 "java" 这个词自身 (不像在 "javascript" 中那样作为前缀),那么我们可以使用模式 /\s java \s /, 它要求在词语java之前和之后都有空格.但是这样作有两个问题.第一: 如果 "java" 出现在一个字符的开头或者是结尾.该模式就不会与之匹配,除非在开头和结尾处有一个空格. 第二: 当这个模式找到一个与之匹配的字符时,它返回的匹配的字符串前端和后端都有空格,这并不是我们想要的.因此,我们使用词语的边界 \b 来代替真正的空格符 \s 进行匹配. 结果表达式是 /\b java \b/.
  下面是正则表达式的锚字符:
  字符 含义
  ^ 匹配的是字符的开头,在多行检索中,匹配的是一行的开头
  $ 匹配的是字符的结尾,在多行检索中,匹配的是一行的结尾
  \b 匹配的是一个词语的边界.简而言之就是位于字符\w 和 \w之间的位置(注意:[\b]匹配的是退格符)
  \B 匹配的是非词语的边界的字符
  6.属性
  有关正则表达式的语法还有最后一个元素,那就是正则表达式的属性,它说明的是高级模式匹配的规则.和其它正则表达式语法不同,属性是在 / 符号之外说明的.即它们不出现在两个斜杠之间,而是位于第二个斜杠之后.javascript 1.2支持两个属性.属性 i 说明模式匹配应该是大小写不敏感的.属性 g 说明模式匹配应该是全局的.也
  就是说,应该找出被检索的字符串中所有的匹配.这两种属性联合起来就可以执行一个全局的,大小写不敏感的匹配.
  例如: 要执行一个大小不敏感的检索以找到词语 "java" (或者是 "java" 、"JAVA"等) 的第一个具体值,我们可以使用大小不敏感的正则表达式 /\b java\b/i .如果要在一个字符串中找到 "java" 所有的具体值,我们还可以添加属性 g, 即 /\b java \b/gi .
  以下是正则表达式的属性:
  字符 含义
  i 执行大小写不敏感的匹配
  g 执行一个全局的匹配,简而言之,就是找到所有的匹配,而不是在找到第一个之后就停止了
  除属性 g 和 i 之外,正则表达式就没有其它像属性一样的特性了.如果将构造函数 RegExp 的静态属性 multiline 设置为 true ,那么模式匹配将以多行的模式进行.在这种模式下,锚字符 ^ 和 $ 匹配的不只是检索字符串的开头和结尾,还匹配检索字符串内部的一行的开头和结尾.

iPhone6S降级通道关没关闭怎么回事详细介绍iPhone6S降级通道关没关闭?相信小伙伴们一定很好奇,下面小编为大家带来了iPhone6S降级通道关闭相关内容详细介绍,感兴趣的小伙伴赶紧跟着小编一起来看看吧。iPhone6S6s自动关机怎么回事6s自动关机解决办法详解苹果又摊上麻烦了,近日频繁有用户反馈,在气温并没有达到0的情况下6s自动关机怎么回事?重要的是6s有30电量自动关机,真是匪夷所思。根据多个渠道的信息显示,目前这种意外关机现象多存iphone6s自动关机怎么回事iphone6s自动关机怎么解决详解这几天,很多人都发现,自己的iphone6s出现了自动关机的情况。明明还有很多电量,但是就是自动关机了。那么iPhone6s自动关机怎么回事?下面,小编就为大家带来iphone6siPhone5s蓝屏是怎么回事iPhone5s蓝屏解决方法图文iPhone5s蓝屏是怎么回事?蓝屏可以指电脑也可以指手机出现故障。iPhone5s如何解决蓝屏重启?下面,我们就来看看如何解决苹果手机蓝屏重启故障。蓝屏,英文名称BSOD(Blu空调显示p6是怎么回事很多用户在使用空调过程中(尤其是清洗过空调后)发现空调提供P6故障代码。导致该故障的原因其实非常常见,以下是具体说明1该故障一般是因为过滤网在拆卸重新安装后没有完全与室内机的卡扣接itouch4如何越狱苹果产品的到来,在手机的市场又多了一个竞争,苹果产品更新的也特别快,比如最早的iPhone3到现在的iPhone6s,现在每一个产品的更新,差不多需要一年的时间,只要一款苹果手机刚iTunesU资料如何删除iTunesU资料删除方法介绍教程iTunesU资料怎么删除?使用iTunesU学习资料的时候,很多人感觉很方便,可是学习完了之后怎么删除呢?这是一个问题,下面小编就告诉大家如何删除iTunesU资料。当你在iTumac删除快捷键以及其他快捷键举例苹果电脑不仅仅具有外观方面的优势,时尚简约的设计往往能够借此吸引到许多消费者,并且换一个角度看来,出色的性能参数和方便携带的特点也十分出色。但是我们无法否认,由于系统方面的原因,对win10设置蓝牙和其他设备中蓝牙开关不见了?这可能是系统因为没有检测到蓝牙设备或者蓝牙设置关闭引起的,可以重启蓝牙设备或者开启蓝牙开关解决。具体介绍如下1桌面右键此电脑管理设备管理器,将右侧的通用串行总线控制器点开,然后会在小米5怎么开启USB调试小米5开启USB调试方法详解目前,很多智能手机的USB调试模式都藏得比较隐秘,是为了防止手机充电时,被用户误开启了该USB调试模式,不过,这也让用户想要开启USB调试模式制作了不小的困难。今天,小编就以小米5iPhone出厂地怎么看iPhone出厂地和出厂日期查看方法iPhone出厂地怎么看?iPhone出厂日期怎么看?今天我们分享的方法不用借用第三方平台,只要看苹果设备上的ldquo序列号rdquo就知道iPhone的出产地以及生产日期。如果
优酷如何使用信箱优酷使用信箱方法点击展开菜单中我的信箱。发消息填写对方在优酷的用户名,可以向其发送站内信。收件箱查看收到的站内信。可删除指定的站内信。发件箱查看您发送的站内信,可删除指定的信息。垃优酷如何指定视频空间中的项目是否显示优酷优盘管理的所有项目中,以下几项不在视频空间显示我的评论我的信箱个人管理信息个人主页设置其余项目默认是公开显示的。如不想显示,可在后台设置中将其关闭。优酷坚持依循高端大气的品牌路优酷如何发表贴子优酷发表贴子方法登录优酷,点击进入某个看吧,点击发表新贴子,写入要发表的内容即可。优酷即优酷网。优酷网是中国领先的视频分享网站,是中国网络视频行业的第一品牌。由古永锵在2006年6优酷点播单的三种连播模式是什么优酷点播单的三种连播模式在点播单的播放页,视频播放列表上方有三种连播模式可以随意点击切换,如下图它们从左至右依次是列表循环单视频循环随机播放三种连播模式。其中列表循环是指点播单按列优酷如何成为一个看吧的成员优酷成为一个看吧的成员方法点击加入即可。吧主会审核用户的申请,通过后用户就成为这个看吧的成员了。优酷即优酷网。优酷网是中国领先的视频分享网站,是中国网络视频行业的第一品牌。由古永锵优酷为什么搜索没有结果优酷搜索无结果有以下几种可能1确实无结果检查键入的关键词是否准确,如有错别字会导致没有完全匹配的结果。放宽搜索条件,如减少几个字,或尽量不使用上部第几期之类的关键词。2关键词是禁用优酷如何在贴子中发视频优酷在贴子中发视频方法登录优酷,点击进入某个看吧,点击发表新贴子。在发表新贴子界面,点击插入视频,打开插入视频界面。插入自己上传或收藏的视频第一步选择最近上传或最近收藏的视频。按住优酷关注视频更新是什么优酷关注,即关注该内容的最新相关视频更新,用户既可以关注好友的空间,也可以关注正在追的电视剧或综艺,甚至还可以关注热门的娱乐明星a。如果用户希望能够在某位好友上传视频后第一时间得到优酷个人认证流程是什么优酷个人认证流程1首先确定用户符合优酷空间认证的标准2下载优酷空间个人认证申请表,按照要求填写内容提交内容必须包含准确详实的个人介绍可核实的联系方式,身份证明和工作证明的扫描件(可优酷如何管理我的视频优酷管理我的视频方法登录后,点击搜索框右侧优盘链接进入后台管理。后台管理页面的左侧是管理菜单,可以管理优盘的所有内容。点击展开菜单中我的视频,选择要管理的项目。优酷即优酷网。优酷网优酷提及我的是什么优酷在发布动态的时候,如果想提醒好友注意你发的内容,可在内容中加入ldquo朋友昵称rdquo。发布成功后,你的好友会收到ldquo提及我的rdquo提醒。如果别人也在所发表的内容