js正则表达式符号和一些练习题

来源:互联网 发布:rational rose是否mac 编辑:程序博客网 时间:2024/05/22 04:36

正则表达式中的特殊字符

字符 含意

\ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。 
-或- 
对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*"。 

^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a" 
$ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A" 

.  匹配以这个字符结尾的字符串,如/.at/匹配“cat”
* 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa 
+ 匹配前面元字符1次或多次,/ba+/将匹配ba,baa,baaa 
? 匹配前面元字符0次或1次,/ba?/将匹配b,ba 
(x)在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰.取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到
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]。


引用网址  http://hi.baidu.com/quiteuniverse/blog/item/9f3f043d46ad1e07bba16716.html

以下函数调用方式:    

?
1
2
3
4
functioncheck()
{
varbb = document.getElementById("txt_id").value;//txt_id为文本框的ID 
alert(ismobile(bb));//ismobile 代表以下任何一个函数名称 }

HTML代码:   

?
1
2
<input type="text"name="textfield"id="txt_id"/>
<input type="submit"name="Submit"value="提交"onclick="check()"/>

**************************

/// 判断输入是否是一个由 0-9 / A-Z / a-z 组成的字符串

?
1
2
3
4
5
6
7
functionisalphanumber(str){
 
 
varresult=str.match(/^[a-zA-Z0-9]+$/);
if(result==null)returnfalse;
returntrue;
}


// 判断输入是否是一个整数

?
1
2
3
4
5
6
functionisint(str)
{
 varresult=str.match(/^(-|\+)?\d+$/);
 if(result==null)returnfalse;
 returntrue;
}

// 判断输入是否是有效的长日期格式 -

?
1
2
3
4
5
6
7
8
9
10
"YYYY-MM-DD HH:MM:SS" || "YYYY/MM/DD HH:MM:SS"
 
 
functionisdatetime(str)
{
 varresult=str.match(/^(\d{4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/);
 if(result==null)returnfalse;
 vard=newDate(result[1], result[3]-1, result[4], result[5], result[6], result[7]);
 return(d.getFullYear()==result[1]&&(d.getMonth()+1)==result[3]&&d.getDate()==result[4]&&d.getHours()==result[5]&&d.getMinutes()==result[6]&&d.getSeconds()==result[7]);
}

// 检查是否为 YYYY-MM-DD || YYYY/MM/DD 的日期格式

?
1
2
3
4
5
6
functionisdate(str){
 varresult=str.match(/^(\d{4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
 if(result==null)returnfalse;
 vard=newDate(result[1], result[3]-1, result[4]);
 return(d.getFullYear()==result[1] && d.getMonth()+1==result[3] && d.getDate()==result[4]);
}

// 判断输入是否是有效的电子邮件

?
1
2
3
4
5
6
functionisemail(str)
{
 varresult=str.match(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/);
 if(result==null)returnfalse;
 returntrue;
}

// 去除字符串的首尾的空格

?
1
2
3
functiontrim(str){
 returnstr.replace(/(^\s*)|(\s*$)/g,"");
}

// 返回字符串的实际长度, 一个汉字算2个长度

?
1
2
3
functionstrlen(str){
 returnstr.replace(/[^\x00-\xff]/g,"**").length;
}

//匹配中国邮政编码(6位)

?
1
2
3
4
5
6
functionispostcode(str)
{
 varresult=str.match(/[1-9]\d{5}(?!\d)/);
 if(result==null)returnfalse;
 returntrue;
}

//匹配国内电话号码(0511-4405222 或 021-87888822)

?
1
2
3
4
5
6
functionistell(str)
{
 varresult=str.match(/\d{3}-\d{8}|\d{4}-\d{7}/);
 if(result==null)returnfalse;
 returntrue;
}

//校验是否为(0-10000)的整数

?
1
2
3
4
5
6
functionisint1(str)
{
 varresult=str.match(/^[0-9]$|^([1-9])([0-9]){0,3}$|^10000$/);
 if(result==null)returnfalse;
 returntrue;
}

//匹配腾讯QQ号

?
1
2
3
4
5
6
functionisqq(str)
{
 varresult=str.match(/[1-9][0-9]{4,}/);
 if(result==null)returnfalse;
 returntrue;
}

//匹配身份证(15位或18位)

?
1
2
3
4
5
6
functionisidcard(str)
{
 var pattern=/^(\d{14}|\d{17})([0-9]|X)$/g;
console.log((str).match(pattern));

}

//校验用户姓名:只能输入1-30个以字母开头的字串。

?
1
2
3
4
5
6


var pattern=/^([A-Za-z])(\S{0,29})/g;
console.log("a111111111111111111111111111111111".match(pattern))


//校验密码:只能输入6-20个字母、数字、下划线

?
1
2
3
4
5
6


var pattern=/^[A-Za-z0-9_]{6,20}$/g;
console.log("a111111111".match(pattern));



//人民币金额检测应用开发时,通常要对人民币金额进行检测,按参考人民币的数字表示规则,编写相应的检测正则式。

l 人民币可以精确到2位小数,但也可以不出现小数,如1.29元。

l 人民币可以没有整数部分,如.29元或0.29元。

l 人民币可以有正负金额,如-.29元或+0.29元。

1
2
3
4
5
6


var pattern=/^(-|)(|[0-9]*)(|\.)[0-9]*$/g;
console.log("-0.29".match(pattern));




0 0