C#_常用正则表达式总结

验证数字的正则表达式集 
验证数字:^[0-9]*$
验证n位的数字:^\d{n}$
验证至少n位数字:^\d{n,}$
验证m-n位的数字:^\d{m,n}$
验证零和非零开头的数字:^(0|[1-9][0-9]*)$
验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
验证非零的正整数:^\+?[1-9][0-9]*$
验证非零的负整数:^\-[1-9][0-9]*$
验证非负整数(正整数 + 0)  ^\d+$
验证非正整数(负整数 + 0)  ^((-\d+)|(0+))$
验证长度为3的字符:^.{3}$
验证由26个英文字母组成的字符串:^[A-Za-z]+$
验证由26个大写英文字母组成的字符串:^[A-Z]+$
验证由26个小写英文字母组成的字符串:^[a-z]+$
验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
验证由数字、26个英文字母或者下划线组成的字符串:^\w+$
验证用户密码:^[a-zA-Z]\w{5,17}$ 正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。
验证是否含有 ^%&',;=?$\" 等字符:[^%&',;=?$\x22]+
验证汉字:^[\u4e00-\u9fa5],{0,}$
验证Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
验证InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
验证电话号码:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:--正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。
验证身份证号(15位或18位数字):^\d{15}|\d{}18$
验证一年的12个月:^(0?[1-9]|1[0-2])$ 正确格式为:“01”-“09”和“1”“12”
验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$    正确格式为:01、09和1、31。
整数:^-?\d+$
非负浮点数(正浮点数 + 0):^\d+(\.\d+)?$
正浮点数   ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
非正浮点数(负浮点数 + 0) ^((-\d+(\.\d+)?)|(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+)?


利用正则表达式限制网页表单里的文本框输入内容:
用正则表达式限制只能输入中文:οnkeyup="value=value.replace(/[^/u4E00-/u9FA5]/g,’’)" onbeforepaste="clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^/u4E00-/u9FA5]/g,’’))"

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

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

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



用正则表达式从URL地址中提取文件名的javascript程序,如下结果为page1
以下是引用片段:
  s="http://www.9499.net/page1.htm" 
  s=s.replace(/(.*//){0,}([^/.]+).*/ig,"$2") 
  alert(s) 

匹配双字节字符(包括汉字在内):[^/x00-/xff]
应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
以下是引用片段:
  
String.prototype.len=function(){return this.replace([^/x00-/xff]/g,"aa").length;} 

  匹配空行的正则表达式:/n[/s| ]*/r
  匹配HTML标记的正则表达式:/<(.*)>.*<///1>|<(.*) //>/
  匹配首尾空格的正则表达式:(^/s*)|(/s*$)
以下是引用片段:
  
String.prototype.trim = function() 
  { 
  return this.replace(/(^/s*)|(/s*$)/g, ""); 
  } 



利用正则表达式分解和转换IP地址:
下面是利用正则表达式匹配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("Not a valid IP address!") 
  } 
  } 


不过上面的程序如果不用正则表达式,而直接用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)) 


"^\\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


--------------------------------------------------------------------------------------------
使用JavaScript编写以下脚本,验证用户输入的邮件地址的有效性。 
<html> 
<head> 
  <script language="Javascript1.2"> 
     <!-- start hiding 
     function verifyAddress(obj) 
     { 
      var email = obj.email.value; 
      var pattern = 
/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/; 
      flag = pattern.test(email); 
      if(flag) 
      { 
       alert(“Your email address is correct!”); 
       return true; 
      } 
      else 
       { 
        alert(“Please try again!”); 
        return false; 
        } 
      } 
     // stop hiding --> 
    </script> 
  </head> 
  <body> 
   <form onSubmit="return verifyAddress(this);"> 
    <input name="email" type="text"> 
    <input type="submit"> 
    </form> 
  </body> 
</html> 



正则表达式对象 
本对象包含正则表达式模式以及表明如何应用模式的标志。 
语法 1 re = /pattern/[flags] 
语法 2 re = new RegExp("pattern",["flags"]) 
参数 
re 
必选项。将要赋值为正则表达式模式的变量名。 
Pattern 
必选项。要使用的正则表达式模式。如果使用语法 1,用 "/" 字符分隔模式。如果用语法 2,用引号将模式引起来。 
Flags 
可选项。如果使用语法 2 要用引号将 flag 引起来。标志可以组合使用,可用的有: 
g (全文查找出现的所有 pattern) 
i (忽略大小写) 
m (多行查找) 
示例 
下面的示例创建一个包含正则表达式模式及相关标志的对象(re),向您演示正则表达式对象的用法。在本例中,作为结果的正则表达式对象又用于 match 方法中: 
function MatchDemo() 
{ 
var r, re; // 声明变量。 
var s = "The rain in Spain falls mainly in the plain"; 
re = new RegExp("ain","g"); // 创建正则表达式对象。 
r = s.match(re); // 在字符串 s 中查找匹配。 
return(r); 
} 


返回值: ain,ain,ain,ain\\ 
属性 lastIndex 属性 | source 属性\\ 
方法 compile 方法 | exec 方法 | test 方法\\ 
要求 版本 3\\ 
请参阅 RegExp 对象 | 正则表达式语法 | String 对象\\ 


exec 方法 
用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组。 
rgExp.exec(str) 
参数 
rgExp 
必选项。包含正则表达式模式和可用标志的正则表达式对象。 
str 
必选项。要在其中执行查找的 String 对象或字符串文字。 
说明\\ 
如果 exec 方法没有找到匹配,则它返回 null。如果它找到匹配,则 exec 方法返回一个数组,并且更新全局 RegExp 对象的属性,以反映匹配结果。数组的0元素包含了完整的匹配,而第1到n元素中包含的是匹配中出现的任意一个子匹配。这相当于没有设置全局标志 (g) 的 match 方法。 
如果为正则表达式设置了全局标志,exec 从以 lastIndex 的值指示的位置开始查找。如果没有设置全局标志,exec 忽略 lastIndex 的值,从字符串的起始位置开始搜索。 
exec 方法返回的数组有三个属性,分别是 input、index 和 lastIndex。Input 属性包含了整个被查找的字符串。Index 属性中包含了整个被查找字符串中被匹配的子字符串的位置。LastIndex 属性中包含了匹配中最后一个字符的下一个位置。 
示例\\ 
下面的例子举例说明了 exec 方法的用法: 
function RegExpTest() 
{ 
var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion()) 
if (ver >= 5.5){ // 测试 JScript 的版本。 
var src = "The rain in Spain falls mainly in the plain."; 
var re = /\w+/g; // 创建正则表达式模式。 
var arr; 
while ((arr = re.exec(src)) != null) 
document.write(arr.index + "-" + arr.lastIndex + arr + "\t"); 
} 
else{ 
alert("请使用 JScript 的更新版本"); 
} 
} 


返回值:0-3The 4-8rain 9-11in 12-17Spain 18-23falls 24-30mainly 31-33in 34-37the 38-43plain 


test 方法\\ 
返回一个 Boolean 值,它指出在被查找的字符串中是否存在模式。 
rgexp.test(str) 
参数\\ 
rgexp 
必选项。包含正则表达式模式或可用标志的正则表达式对象。 
str 
必选项。要在其上测试查找的字符串。 
说明 
test 方法检查在字符串中是否存在一个模式,如果存在则返回 true,否则就返回 false。 
全局 RegExp 对象的属性不由 test 方法来修改。 
示例 
下面的例子举例说明了 test 方法的用法: 
function TestDemo(re, s) 
{ 
var s1; // 声明变量。 
// 检查字符串是否存在正则表达式。 
if (re.test(s)) // 测试是否存在。 
s1 = " contains "; // s 包含模式。 
else 
s1 = " does not contain "; // s 不包含模式。 
return("’" + s + "’" + s1 + "’"+ re.source + "’"); // 返回字符串。 
} 


函数调用:
document.write (TestDemo(/ain+/ ,"The rain in Spain falls mainly in the plain.")); 

返回值:’The rain in Spain falls mainly in the plain.’ contains ’ain+’ 

match 方法 
使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回。\\ 
stringObj.match(rgExp) 
参数\\ 
stringObj 
必选项。对其进行查找的 String 对象或字符串文字。 
rgExp 
必选项。为包含正则表达式模式和可用标志的正则表达式对象。也可以是包含正则表达式模式和可用标志的变量名或字符串文字。 
说明\\ 
如果 match 方法没有找到匹配,返回 null。如果找到匹配返回一个数组并且更新全局 RegExp 对象的属性以反映匹配结果。 
match 方法返回的数组有三个属性:input、index 和 lastIndex。Input 属性包含整个的被查找字符串。Index 属性包含了在整个被查找字符串中匹配的子字符串的位置。LastIndex 属性包含了最后一次匹配中最后一个字符的下一个位置。 
如果没有设置全局标志 (g),数组的 0 元素包含整个匹配,而第 1 到 n 元素包含了匹配中曾出现过的任一个子匹配。这相当于没有设置全局标志的 exec 方法。如果设置了全局标志,元素 0 到 n 中包含所有匹配。 
示例\\ 
下面的示例演示了match 方法的用法: 
function MatchDemo() 
{ 
var r, re; // 声明变量。 
var s = "The rain in Spain falls mainly in the plain"; 
re = /ain/i; // 创建正则表达式模式。 
r = s.match(re); // 尝试匹配搜索字符串。 
return(r); // 返回第一次出现 "ain" 的地方。 
} 


返回值:ain 
本示例说明带 g 标志设置的 match 方法的用法。 
function MatchDemo() 
{ 
var r, re; // 声明变量。 
var s = "The rain in Spain falls mainly in the plain"; 
re = /ain/ig; // 创建正则表达式模式。 
r = s.match(re); // 尝试去匹配搜索字符串。 
return(r); // 返回的数组包含了所有 "ain" 
// 出现的四个匹配。 
} 


返回值:ain,ain,ain,ain 
上面几行演示了字符串文字的 match 方法的用法。 
var r, re = "Spain"; 
r = "The rain in Spain".replace(re, "Canada"); 
return r; 
返回值:The rain in Canada 


search 方法 
返回与正则表达式查找内容匹配的第一个子字符串的位置。 
stringObj.search(rgExp) 
参数\\ 
stringObj 
必选项。要在其上进行查找的 String 对象或字符串文字。 
rgExp 
必选项。包含正则表达式模式和可用标志的正则表达式对象。 
说明 
search 方法指明是否存在相应的匹配。如果找到一个匹配,search 方法将返回一个整数值,指明这个匹配距离字符串开始的偏移位置。如果没有找到匹配,则返回 -1。 
示例\\ 
下面的示例演示了 search 方法的用法。 
function SearchDemo() 
{ 
var r, re; // 声明变量。 
var s = "The rain in Spain falls mainly in the plain."; 
re = /falls/i; // 创建正则表达式模式。 
r = s.search(re); // 查找字符串。 
return(r); // 返回 Boolean 结果。 
} 


返回值:18 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值