要匹配 <tr...> 标签但缺少闭合标签 </tr> 的情况,有几种解决方案:
方法1:使用正则表达式容忍不完整标签
$pattern = '/<trb[^>]*>(?:(?!</tr>).)*$/is';
preg_match_all($pattern, $html, $matches);
这个正则表达式的含义:
<trb[^>]*> 匹配开始 tr 标签
(?:(?!</tr>).)* 匹配任何不包含 </tr> 的字符
$ 确保匹配到字符串末尾(即没有闭合标签)
方法2:使用 DOM 解析器更可靠地处理
正则表达式不是处理 HTML 的最佳工具,特别是对于不完整的标记。更好的方法是使用 PHP 的 DOM...
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...
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;
}...
这个正则的关键就在于匹配链接,匹配之后,在两边加上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="'+...
/<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 复...
<!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,"&").replace(/</g,"<").replace(/>/g,">").repla...
JavaScript作为客户端脚本可以说无处不在,尤其是作为客户端的数据验证尤为重要。而对于数据有效性、合法性的验证,正则表达式起到了举足轻重的作用。现在我们就从时间校验来开始学习正则表达式的用法。 为什么要从时间验证的例子开始我们的正则表达之旅呢?首先,因为时间校验比较常用,尤其是日期的验证几乎是每个注册程序都要进行校验的;另外,日期函数相对来说包含的涉及正则表达式的内容较少,其次字符单一除了数字之外,就是几个很有限的连接连接符号,正则逻辑简单。
预备知识: 1.为JavaScript增加函数:熟悉Java的人都是知道,Java所有的方法都是...
又发现了一个 .net 的bug!最近在使用正则表达式的时候发现:在忽略大小写的时候,匹配值从 0xff 到 0xffff 之间的所有字符,正则表达式竟然也能匹配两个 ASCII 字符:i(code: 0x69) 和 I(code: 0x49);但是仍然不能匹配其他的 ASCII 字母和数字。
比如以下的代码就是用来测试用正则表达式匹配从 0xff 到 0xffff 的字符。而值范围在 0 到 0xfe 的所有字符是不能被匹配的。
1234567891011121314151617Regex regex = new Regex(@"[/u00FF-/uFFFF]+");&...
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&...
正则表达式中的组是很重要的一个概念,它是我们通向高级正则应用的的桥梁。 组的概念 一个正则表达式匹配结果可以分成多个部分,这就是组(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...
字符
意义:对于字符,通常表示按字面意义,指出接着的字符为特殊字符,不作解释。
例如:/b/匹配字符'b',通过在b 前面加一个反斜杠,也就是/b/,则该字符变成特殊字符,表示
匹配一个单词的分界线。
或者:
对于几个字符,通常说明是特殊的,指出紧接着的字符不是特殊的,而应该按字面解释。
例如:*是一个特殊字符,匹配任意个字符(包括0个字符);例如:/a*/意味匹配0个或多个a。
为了匹配字面上的*,在a前面加一个反斜杠;例如:/a*/匹配'a*'。
字符^
意义:表示匹配的字符必须在最前边。
例如:/^A/不匹配"an A,"中的'A',但匹配"An A."中最前面的'A'。
字符$
意义:与^类似,匹配最末...
字符
意义:对于字符,通常表示按字面意义,指出接着的字符为特殊字符,不作解释。
例如:/b/匹配字符'b',通过在b 前面加一个反斜杠,也就是/b/,则该字符变成特殊字符,表示匹配一个单词的分界线。
或者:
对于几个字符,通常说明是特殊的,指出紧接着的字符不是特殊的,而应该按字面解释。
例如:*是一个特殊字符,匹配任意个字符(包括0个字符);例如:/a*/意味匹配0个或多个a。
为了匹配字面上的*,在a前面加一个反斜杠;例如:/a*/匹配'a*'。
字符^
意义:表示匹配的字符必须在最前边。
例如:/^A/不匹配"an A,"中的'A',但匹配"An A."中最前面的'A'。
字符$
意义:与^类似,匹配最末的字符。
例如...
我们经常会处理来自用户输入或从数据库中读取的数据,可能在你的字符串中有多余的空白或制表符,回车等。存储这些额外的字符是有点浪费空间的。
如果您想要去掉字符串开始和结束的空白可以使用PHP内部函数trim() 。但是, 我们经常想完全清除空白。需要把开始和结束的空白清除掉,将多个空白变为一个空白,使用一个规则来处理同样的类型的其它空白。
完成这些可以使用PHP的正则表达式来完成
下例可以去除额外Whitespace
<?php
$str = " This line containstliberal rn use of whitespace.nn";
// First remove the leading/trailing whitespace
//去掉开始和结束的空白
$str = trim($str);
// N...