首页 技术教程 实用代码 注册破解 正则表达式 网址导航 电子书籍

正则表达式中各个符号的意义

1、字符/: 意义:对于字符,通常表示按字面意义,指出接着的字符为特殊字符,不作解释. 例如:/b/匹配字符’b’,通过在b 前面加一个反斜杠,也就是/b/,则该字符变成特殊字符,表示匹配一个单词的分界线. 或者,对于几个字符,通常说明是特殊的,指出紧接着的字符不是特殊的,而应该按字面解释. 例如:*是一个特殊字符,匹配任意个字符(包括0个字符);例如:/a*/意味匹配0个或多个a.为了匹配字面上的*,在a前面加一个反斜杠;例如:/a*/匹配’a*’. 2、字符^ 意义:表示匹配的字符必须在最前边. 例如:/^A/不匹配"an A,"中的’A’,但匹配"An A."中最前面的’A’. 3、...
类别:网页编程    查看:96    更新:2024-08-24

正则表达式中贪婪和非贪婪(惰性)匹配的区别与效率问题

什么是贪婪模式匹配? 正则中“贪婪模式匹配”原则是: 当解释器将代码中的字符解析成一个个的 编译器在处理代码时眼中看到的最小语法单元时,编译器会使用一种贪婪匹配算法,也就是说会尽可能让一个单元包含更多的字符。 非贪婪匹配的效率 可能有不少的人和我一样,有过这样的经历:当我们要匹配类似 "<td>内容</td>" 或者 "加粗" 这样的文本时,我们根据正向预搜索功能写出这样的表达式:"<td>([^<]|<(?!/td>))*</td>" 或者 "<td>((?!</td>).)*</td>"。 当发现非贪婪匹配之时,恍然大悟,同样功能的表达式可以写得如此简单:"<t...
类别:网页编程    查看:135    更新:2014-07-29

正则表达式基础知识

 一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。如: JScriptVBScript匹配/^\[ \t]*$/"^\[ \t]*$"匹配一个空白行。/\d{2}-\d{5}/"\d{2}-\d{5}"验证一个ID 号码是否由一个2位数字,一个连字符以及一个5位数字组成。/<(.*)>.*<\/\1>/"<(.*)>.*<\/\1>"匹配一个 HTML 标记。下表是元字符及其在正则表达式上下文中的行为的一个完整列表:字符描述\将下一个字符标记为一个特殊字符、或一个原义字符、或一...
类别:网页编程    查看:109    更新:2014-06-28

正则表达式检验是否输入日期时间

<script> function check(str){ var reg = /^(d+)-(d{1,2})-(d{1,2}) (d{1,2}):(d{1,2}):(d{1,2})$/; var r = str.match(reg); if(r==null)return false; r[2]=r[2]-1; var d= new Date(r[1], r[2],r[3], r[4],r[5], r[6]); if(d.getFullYear()!=r[1])return false; if(d.getMonth()!=r[2])return false; if(d.getDate()!=r[3])return false; if(d.getHours()!=r[4])return false; if(d.getMinutes()!=r[5])return false; if(d.getSeconds()!=r[6])return false; return true; } </script> 1.var reg = /^(d+)-(d{1,2})-(d{1,2}) (d{1,2}):(d{1,2}):(d{1,2})$/; 建立正则表达式: d:表示数字,即数字0-9 {1,2}:表示匹配1-2次 2...
类别:网页编程 - JavaScript    查看:138    更新:2014-06-05

javascript匹配MAC地址的正则表达式

function CheckMac()  {  //mac地址正则表达式  var reg_name=/[A-Fd]{2}:[A-Fd]{2}:[A-Fd]{2}:[A-Fd]{2}:[A-Fd]{2}:[A-Fd]{2}/;  if(!reg_name.test(document.form2.mac.value)){  alert("mac地址格式不正确!mac地址格式为00:24:21:19:BD:E4");  document.form2.mac.focus();  return false;  }  return true;  }...
类别:网页编程 - JavaScript    查看:127    更新:2014-05-22

通过时间校验学习JavaScript正则表达式

JavaScript作为客户端脚本可以说无处不在,尤其是作为客户端的数据验证尤为重要。而对于数据有效性、合法性的验证,正则表达式起到了举足轻重的作用。现在我们就从时间校验来开始学习正则表达式的用法。   为什么要从时间验证的例子开始我们的正则表达之旅呢?首先,因为时间校验比较常用,尤其是日期的验证几乎是每个注册程序都要进行校验的;另外,日期函数相对来说包含的涉及正则表达式的内容较少,其次字符单一除了数字之外,就是几个很有限的连接连接符号,正则逻辑简单。       预备知识:    1.为JavaScript增加函数:熟悉Java的人都是知道,Java所有的方法都是...
类别:网页编程 - JavaScript    查看:140    更新:2014-05-21

Lambda表达式的一般应用

1. 在List中实现Find,Sort,Foreach,ConvertAll  例如:  List numList = new List();  ....//初始化  //实现Find  int x = numList.Find(n=>n == 3);  //实现sort  numList.Sort((x,y)=>{return x.CompareTo(y); });  //实现foreach  numList.ForEach(n=>otherList.Add(n));  lambda表达式使得函数可以在使用的地方声明,并且可以在lambda函数中使用lambda函数之外的数据。个人认为前者并不是什么好事,因为函数在任何地方声明并使用可能会对代码的维护造成负面影响,有价值的地方是后...
类别:网页编程 - ASP.NET    查看:81    更新:2014-05-20

.NET开发正则表达式中BUG一例

  又发现了一个 .net 的bug!最近在使用正则表达式的时候发现:在忽略大小写的时候,匹配值从 0xff 到 0xffff 之间的所有字符,正则表达式竟然也能匹配两个 ASCII 字符:i(code: 0x69) 和 I(code: 0x49);但是仍然不能匹配其他的 ASCII 字母和数字。  比如以下的代码就是用来测试用正则表达式匹配从 0xff 到 0xffff 的字符。而值范围在 0 到 0xfe 的所有字符是不能被匹配的。    1234567891011121314151617Regex regex = new Regex(@"[/u00FF-/uFFFF]+");&...
类别:网页编程 - ASP.NET    查看:135    更新:2014-05-20

.NET下正则表达式应用的四个示例

  1.确认有效电子邮件格式   下面的代码示例使用静态 Regex.IsMatch 方法验证一个字符串是否为有效电子邮件格式。如果字符串包含一个有效的电子邮件地址,则 IsValidEmail 方法返回 true,否则返回 false,但不采取其他任何操作。您可以使用 IsValidEmail,在应用程序将地址存储在数据库中或显示在 ASP.NET 页中之前,筛选出包含无效字符的电子邮件地址。  [Visual Basic] Function IsValidEmail(strIn As String) As Boolean ' Return true if strIn is in valid&...
类别:网页编程 - ASP.NET    查看:132    更新:2014-05-20

.NET正则表达式使用高级技巧之组的概念

  正则表达式中的组是很重要的一个概念,它是我们通向高级正则应用的的桥梁。  组的概念   一个正则表达式匹配结果可以分成多个部分,这就是组(Group)的目的。能够灵活的使用组后,你会发现Regex真是很方便,也很强大。   先举个例子  public static void Main() {  string s = "2005-2-21";  Regex reg = new Regex(@"(?<y>d{4})-(?<m>d{1,2})-(?<d>d{1,2})",RegexOptions.Compiled);  Match match = reg.Match(s);  int year = int.Parse(match.Groups["y"].Va...
类别:网页编程 - ASP.NET    查看:138    更新:2014-05-20

正则表达式中有哪些特殊字符

字符 意义:对于字符,通常表示按字面意义,指出接着的字符为特殊字符,不作解释。 例如:/b/匹配字符'b',通过在b 前面加一个反斜杠,也就是/b/,则该字符变成特殊字符,表示 匹配一个单词的分界线。 或者: 对于几个字符,通常说明是特殊的,指出紧接着的字符不是特殊的,而应该按字面解释。 例如:*是一个特殊字符,匹配任意个字符(包括0个字符);例如:/a*/意味匹配0个或多个a。 为了匹配字面上的*,在a前面加一个反斜杠;例如:/a*/匹配'a*'。 字符^ 意义:表示匹配的字符必须在最前边。 例如:/^A/不匹配"an A,"中的'A',但匹配"An A."中最前面的'A'。 字符$ 意义:与^类似,匹配最末...
类别:网页编程 - PHP技术    查看:139    更新:2014-05-19

正则表达式中的特殊字符一览

字符 意义:对于字符,通常表示按字面意义,指出接着的字符为特殊字符,不作解释。 例如:/b/匹配字符'b',通过在b 前面加一个反斜杠,也就是/b/,则该字符变成特殊字符,表示匹配一个单词的分界线。 或者: 对于几个字符,通常说明是特殊的,指出紧接着的字符不是特殊的,而应该按字面解释。 例如:*是一个特殊字符,匹配任意个字符(包括0个字符);例如:/a*/意味匹配0个或多个a。 为了匹配字面上的*,在a前面加一个反斜杠;例如:/a*/匹配'a*'。 字符^ 意义:表示匹配的字符必须在最前边。 例如:/^A/不匹配"an A,"中的'A',但匹配"An A."中最前面的'A'。 字符$ 意义:与^类似,匹配最末的字符。 例如...
类别:网页编程 - PHP技术    查看:125    更新:2014-05-19

PHP正则表达式清除字符串的空白

我们经常会处理来自用户输入或从数据库中读取的数据,可能在你的字符串中有多余的空白或制表符,回车等。存储这些额外的字符是有点浪费空间的。 如果您想要去掉字符串开始和结束的空白可以使用PHP内部函数trim() 。但是, 我们经常想完全清除空白。需要把开始和结束的空白清除掉,将多个空白变为一个空白,使用一个规则来处理同样的类型的其它空白。 完成这些可以使用PHP的正则表达式来完成 下例可以去除额外Whitespace <?php $str = " This line  containstliberal rn use of   whitespace.nn"; // First remove the leading/trailing whitespace //去掉开始和结束的空白 $str = trim($str); // N...
类别:网页编程 - PHP技术    查看:123    更新:2014-05-19

让正则表达式经受的起反复试验

正则表达式难于书写、难于阅读、难于维护,经常错误匹配意料不到的文本或者错过了有效的文本,这些问题都是由正则表达式的表现和能力引起的。每个元字符(metacharacter)的能力和细微差别组合在一起,使得代码不借助于智力技巧就无法解释。      许多包含一定特性的工具使阅读和编写正则表达式变得容易了,但是它们又很不符合习惯。对于很多程序员来说,书写正则表达式就是一种魔法艺术。他们坚持自己所知道的特征并持有绝对乐观的态度。如果你愿意采用本文所探讨的五个习惯,你将可以让你设计的正则表达式经受的住反复试验。     本文将使用Perl、PHP和Python语言作为代码示例,但是本文的建议几乎适...
类别:网页编程 - PHP技术    查看:118    更新:2014-05-19

preg_replace——执行正则表达式的搜索和替换

mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit]) 在 subject 中搜索 pattern 模式的匹配项并替换为 replacement。如果指定了 limit,则仅替换 limit 个匹配,如果省略 limit 或者其值为 -1,则所有的匹配项都会被替换。  replacement 可以包含 n 形式或(自 PHP 4.0.4 起)$n 形式的逆向引用,首选使用后者。每个此种引用将被替换为与第 n 个被捕获的括号内的子模式所匹配的文本。n 可以从 0 到 99,其中&nbs...
类别:网页编程 - PHP技术    查看:135    更新:2014-05-19

preg_split——用正则表达式分割字符串

array preg_split ( string pattern, string subject [, int limit [, int flags]]) 返回一个数组,包含 subject 中沿着与 pattern 匹配的边界所分割的子串。  如果指定了 limit,则最多返回 limit 个子串,如果 limit 是 -1,则意味着没有限制,可以用来继续指定可选参数 flags。  flags 可以是下列标记的任意组合(用按位或运算符 | 组合):  PREG_SPLIT_NO_EMPTY  如果设定了本标记,则 preg_split() 只返回非空的成分。  PREG_SPLIT_DE...
类别:网页编程 - PHP技术    查看:125    更新:2014-05-19