JS 正则

{min,max} 连续的n个字符

a{5}   重复5个"a",结果“aaaaa”
a{,5}      最多5个"a"
a{5,}      最少5个"a",最多不限
a{2,6}    最少2个"a",最多6个"a"

元字符

.  任何一个单字符

*   出现0或多次
+  出现1或多次
?    出现0或1次
^   1、字符串(或行)的开头
2、否定此类, 如:[^123456] 匹配除123456以外的字符,q[^u] 匹配一个q,后面跟着一个不是u的字符
           [^b-e]表示b到e这个范围之外的字符
$    字符串(或行)的结尾
\     反斜杠,用于对元字符“转义”
|     或,a | b ,匹配"a”或"b”
( )  分组,(ab){2,3} 匹配abab,ababab
[ ]   集合
-  范围,[0-9] 匹配任一个0~9之间的数字, [a-z],[A-Z]
   (如果需要在范围中包括连字符,将它指定为第一个字符)

特殊字符

\t
    Tab 
\r    回车符
\n   换行符
       要注意的是Windows中文本文件使用“\r\n”来结束一行而Unix使用“\n”。



字符集的简写

因为一些字符集非常常用,所以有一些简写方式。

\A   只匹配整个字符串的开始位置,即使有换行
\Z    只匹配整个字符串的结束位置。即使有换行

\d    代表 [0-9]
\D  非数字 [^0-9]

\b   匹配单词的结尾。例如:ve\b 匹配单词“love”等,但不匹配“very”、“even”等
\B  匹配单词的开头。例如:ve\B 匹配单词“very”等,但不匹配“love”等

\w   代表单词字符。包含了[A-Za-z0-9_]这个是随正则表达式实现的不同而有些差异。
\W代表非单词字符。 

\s    代表“白字符”。包含了空格符和Tab符,以及回车换行符\r\n。这个也是和不同的实现有关的。
\S    任何非空白的字符。等价于“^\f\n\r\t\v]”


字符集的缩写形式可以用在方括号之内或之外。

\s\d  匹配一个白字符后面紧跟一个数字。
[\s\d]   匹配单个白字符或数字。
[\da-fA-F]   将匹配一个十六进制数字。


相关文章:

深入浅出之正则表达式(一)http://www.cnblogs.com/dragon/archive/2006/05/08/394078.html
深入浅出之正则表达式(二)http://dragon.cnblogs.com/archive/2006/05/09/394923.html

下面这篇转自:http://blog.trade-in-world.com/permalink.aspx?id=12

RegExp.rightContext属性 ($')
     返回被搜索的字符串中从最后一个匹配位置开始到字符串结尾之间的字符。只读。 

RegExp.lastMatch属性 ($&)
返回任何正则表达式搜索过程中的最后匹配的字符。只读。 

RegExp.leftContext属性 ($`)
返回被查找的字符串中从字符串开始位置到最后匹配之前的位置之间的字符。只读。 

RegExp.lastParen属性 ($+)
如果有的话,返回任何正则表达式查找过程中最后括的子匹配。只读。

正则表达式--常用的 
只能输入数字:“^[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]*$”
只能输入长度为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,}$”


汉字 [\u4e00-\u9fa5]
非汉字 [^\u4e00-\u9fa5]


验证Email地址:“^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$”
验证InternetURL:“^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$”
验证电话号码:“^(\(\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”。


用正则表达式限制文本框只能输入数字,小数点,英文字母,汉字等各类代码


1.文本框只能输入数字代码(小数点也不能输入)
<input onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')">

2.只能输入数字,能输小数点.
<input onkeyup="if(isNaN(value))execCommand('undo')" onafterpaste="if(isNaN(value))execCommand('undo')">
<input name=txt1 onchange="if(/\D/.test(this.value)){alert('只能输入数字');this.value='';}">

3.数字和小数点方法二
<input type=text t_value="" o_value="" onkeypress="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value" onkeyup="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value" onblur="if(!this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?|\.\d*?)?$/))this.value=this.o_value;else{if(this.value.match(/^\.\d+$/))this.value=0+this.value;if(this.value.match(/^\.$/))this.value=0;this.o_value=this.value}">

4.只能输入字母和汉字
<input onkeyup="value=value.replace(/[\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[\d]/g,''))" maxlength=10 name="Numbers">

5.只能输入英文字母和数字,不能输入中文
<input onkeyup="value=value.replace(/[^\w\.\/]/ig,'')">

6.只能输入数字和英文<font color="Red">chun</font>
<input onKeyUp="value=value.replace(/[^\d|chun]/g,'')">

7.小数点后只能有最多两位(数字,中文都可输入),不能输入字母和运算符号:
<input onKeyPress="if((event.keyCode<48 || event.keyCode>57) && event.keyCode!=46 || /\.\d\d$/.test(value))event.returnValue=false">

8.小数点后只能有最多两位(数字,字母,中文都可输入),可以输入运算符号:
<input onkeyup="this.value=this.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')">

转自:http://www.chinaphper.com/?action=show&id=52

1.只能输入数字和英文的:

<input onkeyup="value=value.replace(/[\W]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" ID="Text1" NAME="Text1"> 
2.只能输入数字的: <input onkeyup="value=value.replace(/[^\d]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" ID="Text2" NAME="Text2"> 
3.只能输入全角的: <input onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))" ID="Text3" NAME="Text3"> 
4.只能输入汉字的: <input onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))" ID="Text4" NAME="Text4">


// 空字符串
function CheckEmpty( str )
{
return ( str == "" );
}

function Check( reg, str )
{
if( reg.test( str ) )
{
return true;
}
return false;
}

// 数字
function checkNumber( str )    {
    var reg = /^[0-9]*$/;
    return reg.test(str);    //js
}

// 数值逻辑大小
function CompareNum( num1, num2 )
{
if( num1 > num2 )
{
return 1;
}
if( num1 == num2 )
{
return 0;
}
return -1;
}

// 邮编
function CheckZip( str )
{
var reg = /^\d{6}$/;
return Check( reg, str );
}

// 手机号/小灵通号
function CheckMobile( str )
{
var regMobile = /^\d{11,12}$/;
return Check( regMobile, str );
}

// 15位身份证号
function CheckNum15( str )
{
var reg = /^\d{15}$/;
return Check( reg, str );
}

// 18位身份证号
function CheckNum18( str )
{
var reg = /^\d{17}(?:\dx)$/;
return Check( reg, str );
}

// 字母或数字
function CheckCharOrNum( str )
{
var reg = /^\w+$/;
return Check( reg, str );
}

// Email
function CheckEmail( str )
{
var reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
return Check( reg, str );
}

去掉字符串中的所有html

function delHtmlTag(str){
return str.replace(/<[^>]+>/g,"");//去掉所有的html标记
}

英文符号换成中文符号

str=str.replace(/\./igm,"。"); 
str=str.replace(/,/igm,",")

去除所有空格: 
str = str.replace(/\s+/g,"");   

去除两头空格: 
str = str.replace(/^\s+|\s+$/g,"");

去除左边空格:   
str = str.replace(/^\s+/g,"");

去除右边空格:   
str = str.replace(/\s+$/g,"");

匹配BR

var hWord="哈哈<br />愿君多采撷,此物最相思。<br />"; 
var hWord=hWord.replace(/<br([^>]?)>/igm,"");

你可能感兴趣的:(JS 正则)