正则表达式注意项

分组

括号(),表示子表达式,也叫分组

1.例子

var reg = /(\w)(\w)/;
var str=‘zhufengpeixun‘;
alert(reg.exec(str));

返回zh,z,h ,zh是整个正则匹配的内容,z是第一个括号里的子正则表达式匹配的内容,h是第二个括号匹配的内容。

这里要注意:每个分组匹配的内容都要返回到结果中。

2、例子

var reg = /(\w)\1/;
var str=‘zhufengpeixun‘;
alert(reg.exec(str));

返回null。

3.例子

var reg = /(\w)\1/;
var str=‘bbs.zhufengpeixun.cn‘;
alert(reg.exec(str));

这个正则会匹配到bb,b。这里的“\1”叫做反向引用,它表示的是第一个括号内的子正则表达式匹配的内容,而不是“第一个括号的内容”。

不记录子正则表达式的匹配结果[匹配不捕获]

使用形如(?:pattern)的正则就可以避免保存括号内的匹配结果。

4.例子

var reg = /^(b|c).+/;
var str=‘bbs.blueidea.com‘;
alert(reg.exec(str));

结果:bbs.blueidea.com,b

5.例子

var reg = /^(?:b|c).+/;
var str=‘bbs.blueidea.com‘;
alert(reg.exec(str));

结果:bbs.blueidea.com

但是,反向引用也不好使了:

6.例子

var reg = /^(b|c)\1/;
var str=‘bbs.zhufengpeixun.cn‘;
alert(reg.exec(str));

结果:bb,b

7.例子

var reg = /^(?:b|c)\1/;
var str=‘bbs.zhufengpeixun.cn‘;
alert(reg.exec(str));

结果:null

因为根本就没有记录括号内匹配的内容,自然就没办法反向引用了。

元字符

*表示0次或者多次,等同于{0,},即c* 和c{0,} 是一个意思。

+表示一次或者多次,等同于{1,},即c+ 和c{1,} 是一个意思。

?表示0次或者1次,等同于{0,1},即c? 和c{0,1} 是一个意思。

.(一个点)表示匹配字符串中出现的第一个非换行符字符。

8.例子

reg = /.+/;
str=‘\nonline.zhufengpeixun‘;
alert(reg.exec(str));

结果:online.zhufengpeixun

9.例子

reg = /^./; //这样表示必须以非换行符开始。
str=‘\nzhufengpeixun‘;
alert(reg.exec(str));

结果:null

正则表达式中的或“|”

10.例子

/^z|o.+/.exec(‘online‘);
//匹配到整个online。

11.例子

/^z|o.+/.exec(‘zhufengpeixun.cn‘);
//结果只有一个z,而不是整个字符串。因为上面正则表达式的意思是,匹配开头的z或者是o.+。

12.例子

/^(z|o).+/.exec(‘zhufengpeixun‘);
//结果是整个串zhufengpeixun,z,加上上面的括号这后,这个正则的意思是,如果字符串的开头是z或者o,那么匹配开头的z或者o以及其后的所有的非换行字符。

[ ] 表示在一组字符中任选一个。

/[a-z]/表示匹配从a到z中的任意一个字母,只要是在ASCII码表里连续出现的字符,都可以用这样的表示法。比如var reg=/^[!-z]$/; 就会匹配从字符“!”开始,到字符“z”结束的任意一个字符。

正则/^[!-z]$/也可以用16进制来表示。如果用16进制表示,则需要用\u开头,表示这是在以16进制的方式定义unicode字符,并且后边的16进制的编码要写成四位,不足4位的前边补0。则上边的那个正则,也可以写成

var reg=/^[\u0021-\u007a]$/;
// 字符“!”对应的16进制编码是21,字符“z”的16进制编码是7a。

中文是扩展的ASCII字符编码,匹配UTF8中文的正则是:/^[\u4e00-\u9fa5]+$/

php中utf-8编码下用正则表达式匹配汉字的正则是:/^[\x{4e00}-\x{9fa5}]+$/u

注意:写成[1-63]不是表示从数字1到数字63,而是表示从1到6和3。因为正则里是在表示连续出现的字符,而不是数字。/[1-63]/.exec("2dcvf");返回的结果是2,因为2在1-6之间,/[1-63]/.exec("8dcv3f");则返回3,因为8不在1-6之间,正则匹配到3。

反字符集合[^abc]

^在正则表达式开始部分的时候表示开头的意思,例如/^c/表示开头是c;但是在字符集和中,它表示的是类似““的意思,例如[^abc]就表示不能是a,b或者c中的任何一个。

13.例子

var reg = /[^abc]/;
var str=‘cbazhufengpeixun‘;
alert(reg.exec(str));

输出z,前三个字符都是[abc]集合中的。由此我们可知:[^0-9]表示非数字,[^a-z]表示非小写字母,依次类推。

时间: 2024-11-10 08:19:34

正则表达式注意项的相关文章

深入浅出的javascript的正则表达式学习教程

阅读目录 了解正则表达式的方法 了解正则中的普通字符 了解正则中的方括号[]的含义 理解javascript中的元字符 RegExp特殊字符中的需要转义字符 了解量词 贪婪模式与非贪婪模式讲解 理解正则表达式匹配原理 理解正则表达式----环视 理解正则表达式---捕获组 理解非捕获性分组 反向引用详细讲解 正则表达式实战 回到顶部 了解正则表达式的方法 RegExp对象表示正则表达式,它是对字符串执行模式匹配的工具: 正则表达式的基本语法如下2种: 直接量语法: /pattern/attrib

转:全面剖析C#正则表达式

到目前为止,许多的编程语言和工具都包含对正则表达式的支持,当然.NET也不例外,.NET基础类库中包含有一个名称空间和一系列可以充分发挥规则表达式威力的类.         正则表达式的知识可能是不少编程人员最烦恼的事儿了.如果你还没有规则表达式方面的知识的话,建议从正则表达式的基础知识入手.前参见 正则表达式语法. 下面就来研究C#中的正则表达式,C#中的正则表达式包含在.NET基础雷库的一个名称空间下,这个名称空间就是System.Text.RegularExpressions.该名称空间包

Linux中的正则表达式基本用法

正则表达式:模式匹配语言,有其自身语法和规则,其中最重要的是元字符,通常用单引号括起 使用greb匹配文本(greb基本用法是提供一个正则表达式和一个文件,但该文件中应该有此正则表达式的匹配项) grep : (global research print), 根据某个模式,搜索文本,并将符合模式的文本行显示出来. 模式 (pattern): 由文本字符和正则表达式的元字符组合而成的匹配条件. Greb选项 -i  使用提供的正则表达式,但不会强制区分大小写 -v  1.仅显示不包含正则表达式匹配

使用正则表达式匹配任意字符包括空格和换行符

注:元字符包括\ | ( ) [ ] { } ^ $ * + ? . ) 匹配中文字符的正则表达式: [\u4e00-\u9fa5]评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^\x00-\xff]评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:\n\s*\r评注:可以用来删除空白行 匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</>|<.*? />

RHCE7 -- 通过gerp使用正则表达式

正则表达式常会含有shell元字符(如S.*等),建议使用单引号('')来括起行令上的正则表达式 1.行定位符号 行首定位符号^和行尾定位符$ #找出以s开头的行: # grep '^s' /etc/passwd #找出以h结尾的行: # grep 'h$' /etc/passwd 2.单词定位符(定位单词) #找出包含以s开头的单词的行 # grep '\<s' /etc/passwd #找出包含以h结尾的单词的行 # grep 'h\>' /etc/passwd 同一个文件,以单词定位找出

正则表达式对象模型

正则表达式对象模型 本主题介绍在处理 .NET Framework 正则表达式时使用的对象模型. 它包含下列部分: 正则表达式引擎 MatchCollection 和 Match 对象 组集合 捕获的组 捕获集合 单个捕获 正则表达式引擎 .NET Framework 中的正则表达式引擎由 Regex 类表示. 正则表达式引擎负责分析和编译正则表达式,并执行用于将正则表达式模式与输入字符串相匹配的操作. 此引擎是 .NET Framework 正则表达式对象模型中的主要组件. 可以通过以下两种方

c#如何使用正则表达式ZZ

什么是正则表达式      正则表达式是用来检验和操作字符串的强大工具.简单的理解正则表达式可以认为是一种特殊的验证字符串.正则表达式常见运用是验证用户输入信息格式,比如上面的那组"\w{1,}@\w{1,}\.\w{1",实际上就是验证邮件地址是否合法的:当然正则表达式不仅仅是用于验证,可以说只要运用字符串的地方都可以使用正则表达式: 涉及的基本的类      正则表达式在英文中写作(Regular Expression),根据正则表达式的使用范围和单词意思,.NET将其命名空间设置

4.C#学习之正则表达式&amp;&amp;Regex

正则表达式(Regular expressions)是一套语法匹配规则,各种语言,如Perl, .Net和Java都有其 对应的共享的正则表达式类库.在.Net中,这个类库叫做Regex. 以下是Regex下的几个静态方法: Escape: 对字符串中的regex中的转义符进行转义:       IsMatch: 如果表达式在字符串中匹配,该方法返回一个布尔值:       Match: 返回Match的实例:       Matches: 返回一系列的Match的方法:       Repla

[UWP]涨姿势UWP源码——RSS feed的获取和解析

本篇开始具体分析涨姿势UWP这个APP的代码,首先从数据的源头着手,即RSS feed的获取和解析,相关的类为RssReader,所有和数据相关的操作均放在里面. 涨姿势网站提供的RSS feed地址为http://www.zhangzishi.cc/feed,在UWP中想要通过发送http request并从URI接受http response,最简单的方式就是使用HttpClient: public async Task<string> DownloadRssString() { var