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

PHP 正则匹配不完整 HTML 标签的解决方案

要匹配 <tr...> 标签但缺少闭合标签 </tr> 的情况,有几种解决方案: 方法1:使用正则表达式容忍不完整标签 $pattern = '/<trb[^>]*>(?:(?!</tr>).)*$/is'; preg_match_all($pattern, $html, $matches); 这个正则表达式的含义: <trb[^>]*> 匹配开始 tr 标签 (?:(?!</tr>).)* 匹配任何不包含 </tr> 的字符 $ 确保匹配到字符串末尾(即没有闭合标签) 方法2:使用 DOM 解析器更可靠地处理 正则表达式不是处理 HTML 的最佳工具,特别是对于不完整的标记。更好的方法是使用 PHP 的 DOM...
类别:网页编程 - PHP技术    查看:51    更新:2025-04-07

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

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

JS正则 - 替换文本中的URL为链接

这个正则的关键就在于匹配链接,匹配之后,在两边加上a标签和属性不是问题。 /http://[w-]*(.[w-]*)+/ig首先匹配http://。 [w-]*是可能的www和bbs等。 .[w-]*匹配.xxx形式,至少有一个。以下是代码: <script type="text/javascript"> /****************************************************** * Share JavaScript (http://www.ShareJS.com) * 使用此脚本程序,请保留此声明 * 获取此脚本以及更多的JavaScript程序,请访问 http://www.ShareJS.com ******************************************************/ function replaceReg(reg,str){ return str.replace(reg,function(m){return '<a href="'+...
类别:网页编程 - JavaScript    查看:110    更新:2014-05-22

JS正则 - 转换源代码中的标签

/<img(?:s*w*?s*=s*".+?")*?s*srcs*=s*"(.+?)"(?:s*w*?s*=s*".+?")*s*>/ig 这段正则和匹配链接标签的正则基本一样,修改如下,标签名img,没有结束标签而是>结束。 测试代码如下: <script type="text/javascript"> function replaceReg(reg,str){ return str.replace(reg,'<img src="$1" border=0 align=middle><br>') } var reg = /<img(?:s*w*?s*=s*".+?")*?s*srcs*=s*"(.+?)"(?:s*w*?s*=s*".+?")*s*>/ig; var str = '我就是传说中的图片了<img src="URL">哎。'; document.write(replaceReg(reg,str)+'<br />'); </script>  [Ctrl+A 全选 Ctrl+C 复...
类别:网页编程 - JavaScript    查看:116    更新:2014-05-22

JS正则 - 指定文字高亮显示

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml">  <head>  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  <META name="Author" content="Sheneyan" />  <script type="text/javascript">  function encode(s){    return  s.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").repla...
类别:网页编程 - JavaScript    查看:86    更新:2014-05-22

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

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

.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技术    查看:122    更新:2014-05-19