new
var re = new RegExp(‘test’,'gi’);
var re = /test/gi;
function
test();//bool
exec();//string 一次匹配并返回
match();//array 多次匹配并返回
search();//类似indexOf()
replace();//替换
split();//分割
有用的预定义类
.[^nr]//不包含换行的任何字符
d [0-9]
D [^0-9]
s [tnx0Bfr]//空字符,换行符
S [^tnx0Bfr]//非空,非换行
w [a-zA-Z0-9]
W [^a-zA-Z0-9]
量词
? {0,1}
* {0,}
+ {1,}
{n} 一定出现n次
{n,m}至少出现n次,但不超过m次
{n,} 至少出现n次
贪婪:”{m,n}”, “{m,}”, “?”, “*”, “+”
(d)(w+) ”w+” 将匹配第一个 “d” 之后的所有字符 “xxxdxxxd”
(d)(w+)(d) ”w+” 将匹配第一个 “d” 和最后一个 “d” 之间的所有字符 “xxxdxxx”。虽然 “w+” 也能够匹配上最后一个 “d”, 但 是为了使整个表达式匹配成功,”w+” 可以 “让出” 它本来能够匹配的最后一个 “d”
懒惰:”{m,n}?”, “{m,}?”, “??”, “*?”, “+?”
(d)(w+?) ”w+?” 将尽可能少的匹配第一个 “d” 之后的字符,结果是:”w+?” 只匹配了一个 “x”
(d)(w+?)(d) 为了让整个表达式匹配成功,”w+?” 不得不匹配 “xxx” 才可以让后边的 “d” 匹配,从而使整个表达式匹配成功。因此,结果是:”w+?” 匹配 “xxx”
分组
var test = ‘([1-2])([a-z])’;
test.replace(reg,function(r0,r1){
console.log(r1);//可用r0,r1进行任意操作
console.log(RegExp.$1);//等价r1
});
匹配中文字符的正则表达式: [u4e00-u9fa5]
匹配双字节字符(包括汉字在内):[^x00-xff]
<script>
function isChinese(temp)
{
var re = /[^u4e00-u9fa5]/;
if(re.test(temp)) return false;
return true;
}
alert(isChinese("中文"));
</script>
例子
<script>
<!--
function checkStr(str){
// [u4E00-uFA29]|[uE7C7-uE7F3]汉字编码范围
var re1 = new RegExp("^([u4E00-uFA29]|[uE7C7-uE7F3]|[a-zA-Z0-9])*$");
if (!re1.test(str)){
alert("否");
return false;
}
alert("是");
return true;
}
//-->
</script>
数字正则
例:
/**正整数匹配表达式*/
var pattern=/^[0-9]*[1-9][0-9]*$/;
var flag = pattern.test(a);
如果a是正整数,flag的boolean值为true,如果a不是正整数,flag的boolean值为false。
/**浮点数匹配表达式*/
var pattern = /^([-]){0,1}([0-9]){1,}([.]){0,1}([0-9]){0,}$/;
/**浮点数匹配表达式且只保留两位小数*/
var pattern=/^-?d+[.d]?d{0,2}$/;
/**正浮点数匹配表达式*/
var pattern=/^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$/;
/**正浮点数且保留两位小数匹配表达式*/
var pattern=/^(([1-9]d*(.d?[0-9])?)|(0.[1-9][0-9])|(0.[0][1-9]))$/;
/**负浮点数匹配表达式*/
var pattern=/^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$/;
/**负浮点数且保留两位小数匹配表达式*/
var pattern=/^-(([1-9]d*(.d?[0-9])?)|(0.[1-9][0-9])|(0.[0][1-9]))$/;
/**负浮点数+0 匹配表达式*/
var pattern=/^((-d+(.d+)?)|(0+(.0+)?))$/;
/**负浮点数+0 并且保留两位小数匹配表达式*/
var pattern=/^((-d+[.d]?d{0,2})|(0+(.0+)?))$/;
正浮点+0匹配表达式
var pattern = /^d+(.d+)?$/;
/**正浮点+0匹配表达式且只保留两位小数*/
var pattern=/^d+[.d]?d{0,2}$/;
/**整数匹配表达式*/
var pattern=/^-?d+$/;
/**正整数匹配表达式*/
var pattern=/^[0-9]*[1-9][0-9]*$/;
/**负整数匹配表达式*/
var pattern=/^-[0-9]*[1-9][0-9]*$/;
/**正整数+0 的匹配表达式*/
var pattern=/^d+$/;
/**负整数+0 的匹配表达式*/
var pattern=/^((-d+)|(0+))$/;
/**全是数字匹配表达式*/
var pattern=/^[0-9]{1,20}$/