收录常用的正则表达式
正则表达式在项目中用时常还是会用到的,不过写起来还是要费些工夫的,于是搜集了一些常用的正则,就不用每次都要自己写了。君子善假于物也,借助现有的经验资料以提高编程的效率。
匹配中文字符的正则表达式:
[\u4e00-\u9fa5]
[\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):
[^\x00-\xff]
[^\x00-\xff]
匹配回车换行符:
[(\r\n)]
[(\r\n)]
匹配文件路径是否合法:
[^(([a-zA-Z]:)|(\\{2}\w+)\$?)(<a href="file://\\(\w[\w">\\(\w[\w</a>]*.*))]
[^(([a-zA-Z]:)|(\\{2}\w+)\$?)(<a href="file://\\(\w[\w">\\(\w[\w</a>]*.*))]
匹配是否为数字:
!(Regex.IsMatch(对象, @"^\d+$")))//表示不是全数字
!(Regex.IsMatch(对象, @"^\d+$")))//表示不是全数字
匹配空行的正则表达式:
\n[\s|]*\r
\n[\s|]*\r
匹配HTML标记的正则表达式:
/<(.*)>.*<\/\1>|<(.*) \/>/
/<(.*)>.*<\/\1>|<(.*) \/>/
匹配首尾空格的正则表达式:
(^\s*)|(\s*$)
(^\s*)|(\s*$)
匹配Email地址的正则表达式:
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
@"^\s*([A-Za-z0-9_-]+(\.\w+)*@(\w+\.)+\w{2,3})\s*$"
@"^\s*([A-Za-z0-9_-]+(\.\w+)*@(\w+\.)+\w{2,3})\s*$"
@"^\w+((-\w+)|(\.\w+))*\@{1}\w+\.{1}\w{2,4}(\.{0,1}\w{2}){0,1}"
@"^\w+((-\w+)|(\.\w+))*\@{1}\w+\.{1}\w{2,4}(\.{0,1}\w{2}){0,1}"
匹配网址URL的正则表达式:
http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
匹配电话号码的正则表达式:
@"^(\(\d{3,4}\)|\d{3,4}-?)?\d{7,8}$"
@"^(\(\d{3,4}\)|\d{3,4}-?)?\d{7,8}$"
匹配手机号码的正则表达式:
通用的:@"^1[0-9]{10}$"
通用的:@"^1[0-9]{10}$"
/*描述不同公司手机号码规则的正则表达式
* *cmcc-中国移动手机号码规则
* *cucc-中国联通手机号码规则
* *cnc--中国网通3G手机号码规则*/
String cmcc = "^[1]{1}(([3]{1}[4-9]{1})|([5]{1}[89]{1}))[0-9]{8}$"
String cucc = "^[1]{1}(([3]{1}[0-3]{1})|([5]{1}[3]{1}))[0-9]{8}$"
String cnc = "^[1]{1}[8]{1}[89]{1}[0-9]{8}$"
/*描述不同公司手机号码规则的正则表达式
* *cmcc-中国移动手机号码规则
* *cucc-中国联通手机号码规则
* *cnc--中国网通3G手机号码规则*/
String cmcc = "^[1]{1}(([3]{1}[4-9]{1})|([5]{1}[89]{1}))[0-9]{8}$"
String cucc = "^[1]{1}(([3]{1}[0-3]{1})|([5]{1}[3]{1}))[0-9]{8}$"
String cnc = "^[1]{1}[8]{1}[89]{1}[0-9]{8}$"
匹配身份证号码的正则表达式:
通用匹配,@"^(\d{14}|\d{17})(\d|[xX])$"
通用匹配,@"^(\d{14}|\d{17})(\d|[xX])$"
一个精确匹配的例子,不过只能匹配1900-2000之间的,
@"^((1[1-5])|(2[1-3])|(3[1-7])|(4[1-6])|(5[0-4])|(6[1-5])|71|(8[12])|91)\d{4}((19\d{2}(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(19\d{2}(0[13578]|1[02])31)|(19\d{2}02(0[1-9]|1\d|2[0-8]))|(19([13579][26]|[2468][048]|0[48])0229))\d{3}(\d|X|x)?$"
一个精确匹配的例子,不过只能匹配1900-2000之间的,
@"^((1[1-5])|(2[1-3])|(3[1-7])|(4[1-6])|(5[0-4])|(6[1-5])|71|(8[12])|91)\d{4}((19\d{2}(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(19\d{2}(0[13578]|1[02])31)|(19\d{2}02(0[1-9]|1\d|2[0-8]))|(19([13579][26]|[2468][048]|0[48])0229))\d{3}(\d|X|x)?$"
匹配车牌号的正则表达式:
/^陕[A-M]-[A-Z0-9][0-9]{4}$/
/^陕[A-M]-[A-Z0-9][0-9]{4}$/
用正则表达式实现javascript中类似trim的功能:
String.prototype.trim = function()
{
return this.replace(/(^\s*)|(\s*$)/g, "");
}
String.prototype.trim = function()
{
return this.replace(/(^\s*)|(\s*$)/g, "");
}
用正则表达式计算字符串的长度(一个双字节字符长度计2,ASCII字符计1):
String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}
String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}
用正则表达式分解和转换IP地址:
1、用正则表达式匹配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!")
}
}
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!")
}
}
2、直接用split函数Ip:
var ip="10.100.20.168"
ipip=ip.split(".")
alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))
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))
用正则表达式从URL地址中提取文件名的javascript程序,如下结果为page1
s="http://www.9499.net/page1.htm"
ss=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")
alert(s)
s="http://www.9499.net/page1.htm"
s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")
alert(s)
用正则表达式限制网页表单里的文本框输入内容。
用正则表达式限制只能输入中文:
onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')"
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')"
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
用正则表达式限制只能输入全角字符:
onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')"
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"
onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')"
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"
用正则表达式限制只能输入数字:
onkeyup="value=value.replace(/[^\d]/g,'') "
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
onkeyup="value=value.replace(/[^\d]/g,'') "
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
补充:软件开发 , C# ,