正则表达式:regular expression
JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法。
方法 :
compile方法
编译一个正则表达式对象
exec方法
运行正则表达式匹配
test方法
测试正则达式匹配
toSource方法
返回一个对象的文字描述指定的对象;你可以使用这个值来建立一个新的对象。
toString方法
返回一个字符串描述指定的对象。
valueOf方法
返回指定对角的原始值。
正则表达式中的特殊字符:
字符 含意
\ 做为转意,即通常在"“后面的字符不按原来意义解释,如/b/匹配字符"b”,当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。
对正则表达式功能字符的还原,如""匹配它前面元字符0次或多次,/a/将匹配a,aa,aaa,加了"“后,/a*/将只匹配"a*”。
^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a"
$ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A"
* 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa
+ 匹配前面元字符1次或多次,/ba+/将匹配ba,baa,baaa
? 匹配前面元字符0次或1次,/ba?/将匹配b,ba
(x) 匹配x保存x在名为$1...$9的变量中
x|y 匹配x或y
{n} 精确匹配n次
{n,} 匹配n次以上
{n,m} 匹配n-m次
[xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符)
[^xyz] 不匹配这个集合中的任何一个字符
[\b] 匹配一个退格符
\b 匹配一个单词的边界
\B 匹配一个单词的非边界
\cX 这儿,X是一个控制符,/\cM/匹配Ctrl-M
\d 匹配一个数字字符,/\d/ = /[0-9]/
\D 匹配一个非数字字符,/\D/ = /[^0-9]/
\n 匹配一个换行符
\r 匹配一个回车符
\s 匹配一个空白字符,包括\n,\r,\f,\t,\v等
\S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/
\t 匹配一个制表符
\v 匹配一个重直制表符
\w 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[\w]匹配"$5.98"中的5,等于[a-zA-Z0-9]
`\W 匹配一个不可以组成单词的字符,如[\W]匹配"$5.98"中的$,等于[^a-zA-Z0-9]。
`
创建一个ExgExp对象的两种方式:
1:构造函数 RegExp();
var pattern = new RegExp("s
"
)
;
2
:
正
则
表
达
式
直
接
量
被
定
义
为
包
含
在
一
对
斜
杠
(
/
)
之
间
的
字
符
隐
式
构
造
v
a
r
p
a
t
t
e
r
n
=
/
s
"); 2:正则表达式直接量 被定义为包含在一对斜杠(/)之间的字符 隐式构造 var pattern = /s
");2:正则表达式直接量被定义为包含在一对斜杠(/)之间的字符隐式构造varpattern=/s/;
举例:
/**
函数名称:isMobile
函数功能:判断输入字符串是不是符合规范的手机号码
判断规范:以13|159开头
输入参数:需要测试的字符串
返回参数:是手机号码:true
不是手机号码:false
*/
function isMobile(s)
{
var patrn=/^13[0-9]{9,9}$|159[0-9]{8,8}$/;
if (!patrn.exec(s))
{
return false;
}
return true;
}
E-mail地址验证:
function test_email(strEmail) {
var myReg = /1+@([_a-z0-9]+.)+[a-z0-9]{2,3}$/;
if(myReg.test(strEmail)) return true;
return false;
}
常见匹配的正则表达式
//验证模板的正则表达式定义
var telPatten=/(\d{3}-|\d{4}-)?(\d{8}|\d{7})/; //国内电话
var mobilePatten=/^(130|131|132|133|134|135|136|137|138|139|159)\d{8}$/; //国内手机号码
var qqPatten=/^[1-9]*[1-9][0-9]*$/; //腾讯QQ
var emailPatten=/^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/; //email地址
var datePatten=/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/; //日期YYYY-MM-DD
var datetimePatten=/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2})$/; //日期时间型YYYY-MM-DD HH:MI
var timePatten=/^(\d{1,2}):(\d{1,2})$/; //时间型HH:MI
var chinesePatten=/[\u4e00-\u9fa5]/; //匹配中文串
var dbcharPatten=/[^\x00-\xff]/; //匹配双字节串
var blanklinePatten=/\n\s*\r/; //匹配空白项
//var htmlPatten=/<(\S*?)[^>]*>.*?</\1>|<.*? />/; //匹配HTML标记
var twoblankPatten=/^\s*|\s*$/; //匹配首尾空白字符
//var urlPatten=/[a-zA-z]+://[^\s]*/;//匹配网址URL
var postPatten=/[1-9]\d{5}(?!\d)/;//匹配中国邮政编码
var idcardPatten=/\d{15}|\d{18}/;//匹配身份证
var ipPatten=/\d+\.\d+\.\d+\.\d+/;//匹配ip地址:
var numstrPatten=/^[0-9]+$/; //全部是数字的字符串
var string1Patten=/^[A-Za-z]+$/; //由26个英文字母组成的字符串
var string2Patten=/^[A-Z]+$/; //由26个英文字母的大写组成的字符串
var string3Patten=/^[a-z]+$/; //由26个英文字母的小写组成的字符串
var string4Patten=/^[A-Za-z0-9]+$/; //由数字和26个英文字母组成的字符串
var string5Patten=/^[A-Za-z0-9_]+$/;//由数字、26个英文字母或者下划线组成的字符串
var string6Patten=/^\w+$/; //匹配由数字、26个英文字母或者下划线组成的字符串
var int1Patten=/^[1-9]\d*|0$/; //非负整数
var int2Patten=/^[1-9]\d*$/; //正整数
var int3Patten=/^-[1-9]\d*|0$/; //非正整数
var int4Patten=/^-[1-9]\d*$/; //负整数
var intPatten=/^-?[1-9]\d*$/; //整数
var float1Patten=/^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$/; //非负浮点数
var float2Patten=/^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$/; //正浮点数
var float3Patten=/^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$/; //非正浮点数
var float4Patten=/^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$/; //负浮点数
var floatPatten=/^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$/; //浮点数
var float5Patten=/^\d+(\.\d+)?$/; //浮点数或者整数
var float6Patten=/^-?\d+(\.\d+)?$/; //浮点数或者整数负数
_a-z0-9 ↩︎