最近学习了正则表达式,不管是对编程亦或是非编程人员来说,正则都是一个非常实用的工具,于是找了些常用的正则表达式。
正则表达式的介绍: 1.可以使用字符作为一个通配符来代替除换行符(\n)之外的任意一个字符,例如: .at可以与"cat","sat","mat"等匹配.通常,这种通配符用于操作系统中文件名匹配. 2.[a-z],任何含在[]中的内容都是一个字符,只匹配一个字符. 如:[a-zA-Z]代表任意大小写字母. 3.[^a-z].匹配任何不属于a-z中的字符. 4.[a-z&&[hij]].匹配hij任何一个(交集) 5.\s.匹配空字符(空格,tab,\n,换页,回车) 6.\S.匹配非空字符(和[^\s]一样) 7.\d.匹配数字,相当于[0-9] 8.\D.匹配非数字,相当于[^0-9],匹配中文,空格,换行符 9.\w.匹配词字符,相当于[a-zA-Z0-9],不包含中文,不能代表空格,换行符 10.\W.匹配非词字符,相当于[^\w],匹配一个中文字 逻辑运算符: |:管道符.如:x|y表示x或y ():捕获组.(abc)|(xyz)表示abc或xyz 边界匹配符: ^:从头匹配 $:从尾匹配 \b:词界. \B.非词界 量词: 量词描述一个模式吸收输入文本的方式. *:前面字符或组匹配0或多个 +:前面字符或组匹配1或多个 ?:前面字符或组匹配0或1个 {n}:前面字符或组的数量为n个 {n,}:前面字符或组的数量至少n个
{n,m}:前面字符或组数量至少n个,最多m个
在正则表达式中具有特殊含义的字符
特殊字符 | 描述 |
. | 表示任意一个字符 |
[abc] | 表示a、b或c中的任意一个字符 |
[^abc] | 除a、b和c以外的任意一个字符 |
[a-zA-z] | 介于a到z,或A到Z中的任意一个字符 |
\s | 空白符(空格、tab、换行、换页、回车) |
\S | 非空白符 |
\d | 任意一个数字[0-9] |
\D | 任意一个非数字[^0-9] |
\w | 词字符[a-zA-Z_0-9] |
\W | 非词字符 |
表示次数的符号 | 描述 |
* | 0 次或者多次 |
+ | 1 次或者多次 |
? | 0 次或者 1 次 |
{n} | 恰好 n 次 |
{n, m} | 至少 n 次,不多于 m 次 |
下面是常用正则表达式大全!(例如:匹配中文、匹配html)
匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?
(1)应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
String.prototype.len=function(){return this.replace([^x00-xff]/g,"aa").length;}
(2)应用:JavaScript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现
String.prototype.trim = function()
{
return this.replace(/(^s*)|(s*$)/g, "");
}
(3)应用:利用正则表达式分解和转换IP地址
function IP2V(ip) //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!")
}
}
(4)应用:从URL地址中提取文件名的javascript程序
s="http://www.9499.net/page1.htm";
s=s.replace(/(.*/){0,}([^.]+).*/ig,"$2") ;//Page1.htm
(5)应用:利用正则表达式限制网页表单里的文本框输入内容
用正则表达式限制只能输入中文: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(/[^d]/g,'') "onbeforepaste= "clipboardData.setData(''text'',clipboardData.getData(''text'').replace(/[^d]/g,''))"
用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[W]/g,'') "onbeforepaste="clipboardData.setData(''text'',clipboardData.getData(''text'').replace(/[^d]/g,''