正则表达式

原创 2007年09月11日 21:09:00

"^/d+$" //非负整数(正整数 + 0)
"^[0-9]*[1-9][0-9]*$" //正整数
"^((-/d+)|(0+))$" //非正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$" //负整数
"^-?/d+$" //整数
"^/d+(/./d+)?$" //非负浮点数(正浮点数 + 0)
"^(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮点数
"^((-/d+(/./d+)?)|(0+(/.0+)?))$" //非正浮点数(负浮点数 + 0)
"^(-(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //负浮点数
"^(-?/d+)(/./d+)?$" //浮点数
"^[A-Za-z]+$" //由26个英文字母组成的字符串
"^[A-Z]+$" //由26个英文字母的大写组成的字符串
"^[a-z]+$" //由26个英文字母的小写组成的字符串
"^[A-Za-z0-9]+$" //由数字和26个英文字母组成的字符串
"^/w+$" //由数字、26个英文字母或者下划线组成的字符串
"^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$" //email地址
"^[a-zA-z]+://(/w+(-/w+)*)(/.(/w+(-/w+)*))*(/?/S*)?$" //url
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年
"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" //Emil
"(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?" //电话号码
"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$" //IP地址

YYYY-MM-DD基本上把闰年和2月等的情况都考虑进去了
^((((1[6-9]|[2-9]/d)/d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]/d|3[01]))|(((1[6-9]|[2-9]/d)/d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]/d|30))|(((1[6-9]|[2-9]/d)/d{2})-0?2-(0?[1-9]|1/d|2[0-8]))|(((1[6-9]|[2-9]/d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$

^[a-zA-Z]//w{3,15}判断密码问题
^符号表示后面连接的规则是对第一个字符的处理限制,它必须由{a-z A-Z}决定,"["表示规则的开始,"]"表示规则的结束,"{"和"}"表示不包含."("和")"表示包含所括起来的字符.数字和下划线的表达式规则是"/w"
^([a-z0-9_]|//-|//.)+@(([a-z0-9_]|//-)+//.)+[a-z]{2,4}$)判断是否合法的EMAIL地址

 

 

 

图片 src[^>]*[^/].(?:jpg|bmp|gif)(?:/"|/')
中文 ^([/u4e00-/u9fa5]+|[a-zA-Z0-9]+)$
网址 "/<a.+?href=['""](?!http/:////)(?!mailto/:)(?>foundAnchor>[^'"">]+?)[^>]*?/>"

匹配中文字符的正则表达式: [/u4e00-/u9fa5]

匹配双字节字符(包括汉字在内):[^/x00-/xff]

匹配空行的正则表达式:/n[/s| ]*/r

匹配HTML标记的正则表达式:/<(.*)>.*<///1>|<(.*) //>/

匹配首尾空格的正则表达式:(^/s*)|(/s*$)(像vbscript那样的trim函数)

匹配Email地址的正则表达式:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*

匹配网址URL的正则表达式:http://([/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)?
---------------------------------------------------------------------------
以下是例子:

利用正则表达式限制网页表单里的文本框输入内容:

用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^/u4E00-/u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/u4E00-/u9FA5]/g,''))"

1.用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^/uFF00-/uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/uFF00-/uFFFF]/g,''))"

2.用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^/d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/d]/g,''))"

3.用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[/W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/d]/g,''))"

4.计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

String.prototype.len=function(){return this.replace([^/x00-/xff]/g,"aa").length;}

5.javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下:

String.prototype.trim = function()
{
return this.replace(/(^/s*)|(/s*$)/g, "");
}

利用正则表达式分解和转换IP地址:

6.下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序:

function IP2V(ip)
{
re=/(/d+)/.(/d+)/.(/d+)/.(/d+)/g //匹配IP地址的正则表达式
if(re.test(ip))
{
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
throw new Error("不是一个正确的IP地址!")
}
}

不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:

var ip="10.100.20.168"
ip=ip.split(".")
alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))

 

(?<=>)[^>]*(?=<)
了能够更好地理解如何在C#环境中使用规则表达式,我写出一些对你来说可能有用的规则表达式,这些表达式在其他的环境中都被使用过,希望能够对你有所帮助。
  
罗马数字

string p1 = "^m*(d?c{0,3}|c[dm])" + "(l?x{0,3}|x[lc])(v?i{0,3}|i[vx])$";
  
    string t1 = "vii";
  
    Match m1 = Regex.Match(t1, p1);
  
交换前二个单词

string t2 = "the quick brown fox";
  
    string p2 = @"(/S+)(/s+)(/S+)";
  
    Regex x2 = new Regex(p2);
  
    string r2 = x2.Replace(t2, "$3$2$1", 1);
  
关健字=值

string t3 = "myval = 3";
  
    string p3 = @"(/w+)/s*=/s*(.*)/s*$";
  
    Match m3 = Regex.Match(t3, p3);
  
实现每行80个字符

string t4 = "********************"
  
     + "******************************"
  
     + "******************************";
  
    string p4 = ".{80,}";
  
    Match m4 = Regex.Match(t4, p4);
  
月/日/年 小时:分:秒的时间格式

string t5 = "01/01/01 16:10:01";
  
    string p5 = @"(/d+)/(/d+)/(/d+) (/d+):(/d+):(/d+)";
  
    Match m5 = Regex.Match(t5, p5);
  
改变目录(仅适用于Windows平台)

string t6 = @"C:/Documents and Settings/user1/Desktop/";
  
  string r6 = Regex.Replace(t6,@"//user1//", @"//user2//");
  
扩展16位转义符

string t7 = "%41"; // capital A
  
    string p7 = "%([0-9A-Fa-f][0-9A-Fa-f])";
  
    string r7 = Regex.Replace(t7, p7, HexConvert);
  
删除C语言中的注释(有待完善)

string t8 = @"
  
    /*
  
     * 传统风格的注释
  
     */
  
    ";
  
    string p8 = @"
  
     //* # 匹配注释开始的定界符
  
     .*? # 匹配注释
  
     /*/ # 匹配注释结束定界符
  
    ";
  
    string r8 = Regex.Replace(t8, p8, "", "xs");
  
删除字符串中开始和结束处的空格

string t9a = " leading";
  
    string p9a = @"^/s+";
  
    string r9a = Regex.Replace(t9a, p9a, "");
  
    string t9b = "trailing ";
  
    string p9b = @"/s+$";
  
    string r9b = Regex.Replace(t9b, p9b, "");
  
在字符/后添加字符n,使之成为真正的新行

string t10 = @"/ntest/n";
  
    string r10 = Regex.Replace(t10, @"//n", "/n");
  
转换IP地址

string t11 = "55.54.53.52";
  
    string p11 = "^" +
  
     @"([01]?/d/d|2[0-4]/d|25[0-5])/." +
  
     @"([01]?/d/d|2[0-4]/d|25[0-5])/." +
  
     @"([01]?/d/d|2[0-4]/d|25[0-5])/." +
  
     @"([01]?/d/d|2[0-4]/d|25[0-5])" +
  
     "$";
  
    Match m11 = Regex.Match(t11, p11);
  
删除文件名包含的路径

string t12 = @"c:/file.txt";
  
    string p12 = @"^.*//";
  
    string r12 = Regex.Replace(t12, p12, "");
  
联接多行字符串中的行

string t13 = @"this is
  
    a split line";
  
    string p13 = @"/s*/r?/n/s*";
  
    string r13 = Regex.Replace(t13, p13, " ");
  
提取字符串中的所有数字

string t14 = @"
  
    test 1
  
    test 2.3
  
    test 47
  
    ";
  
    string p14 = @"(/d+/.?/d*|/./d+)";
  
    MatchCollection mc14 = Regex.Matches(t14, p14);
  
找出所有的大写字母

string t15 = "This IS a Test OF ALL Caps";
  
    string p15 = @"(/b[^/Wa-z0-9_]+/b)";
  
    MatchCollection mc15 = Regex.Matches(t15, p15);
  
找出小写的单词

string t16 = "This is A Test of lowercase";
  
    string p16 = @"(/b[^/WA-Z0-9_]+/b)";
  
    MatchCollection mc16 = Regex.Matches(t16, p16);
  
找出第一个字母为大写的单词

string t17 = "This is A Test of Initial Caps";
  
    string p17 = @"(/b[^/Wa-z0-9_][^/WA-Z0-9_]*/b)";
  
    MatchCollection mc17 = Regex.Matches(t17, p17);
  
找出简单的HTML语言中的链接


string t18 = @"
  
    <html>
  
    <a href=""first.htm"">first tag text</a>
  
    <a href=""next.htm"">next tag text</a>
  
    </html>
  
    ";
  
    string p18 = @"<A[^>]*?HREF/s*=/s*[""']?" + @"([^'"" >]+?)[ '""]?>";
  
    MatchCollection mc18 = Regex.Matches(t18, p18, "si");
 

正则表达式个人学习总结

  • 2017年12月06日 10:50
  • 318KB
  • 下载

php正则表达式替换URL链接地址为指定url的形式

我们经常遇到采集某站文章内容,但是经常他们会有内链接,去掉感觉不好不利于SEO优化,其实,我们可以使用php正则表达式替换url链接地址为指定url的形式。 譬如: 我们的采集的内容如下:...
  • aerchi
  • aerchi
  • 2014年04月01日 13:28
  • 5733

Java正则表达式使用demo

  • 2017年12月03日 23:07
  • 79KB
  • 下载

C#中正则表达式使用示例

两种使用方法: 1、在文本输入框后加入正则表达式验证控件Regularexpression_r_rValidator。此种方法适用于WebForm中。 在Validationexpressio...
  • lwfwylb
  • lwfwylb
  • 2013年04月21日 22:11
  • 427

python 正则表达式

  • 2017年11月28日 16:18
  • 228KB
  • 下载

[150827]Groovy 之正则表达式

一提到 Perl,很多人对它啧啧称道的就是它那强大的正则表达式。一段富含正则表达式的 Perl 代码能让人觉得眼花缭乱,不过一旦习惯了就会对此爱不释手。而 Java 是在 1.4(在之前的版本需要依靠...

绿色版正则表达式编辑器regester

  • 2017年11月25日 20:17
  • 2.05MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:正则表达式
举报原因:
原因补充:

(最多只允许输入30个字)