JS-RegExp

归纳一下正则表达式

语法

1
2
3
var patt = new RegExp("\\w+")
var patt = /\w+/

修饰符

i 大小写不敏感
g 全局匹配
m 多行匹配

方括号

[abc] 匹配集合内任何字符
[^abc] 与上否
[0-9] 任何0-9之间的数字
[a-z] 任何小写a-z的字符
[A-Z] 大写
[A-z] 大写至小写

元字符

. 单个字符(除了换行和行结束)
\w 单词字符
\W 非(同上)
\d 数字
\D 非(同上)
\s 空白字符
\S 非(同上)
\b 单词边界
\B 非(同上)
\0 NULL字符
\n 换行符
\f 换页符
\r 回车符
\t 制表符
\v 垂直制表符
\xxx 八进制xxx规定字符

1
2
3
4
var str = "Hello World!";
var patt = /\127/g;
//result W

\xdd 十六进制dd规定字符

1
2
3
4
var str = "hello World!";
var patt = /\x57/g;
//result W

\uxxxx 十六进制xxxx规定的Unicode字符

1
2
3
4
var str = "hello World!";
var patt = /\u0057/g;
//result W

量词

n+ 至少一个, 1 2 3 4 …
n* 0或多个
n? 0或1
n{X} X个
n{X,} 至少X个
n{X,Y} X<=次数<=Y
n$ 以n结尾
^n 以n开头
?=n 紧接n
?!n 没有紧接n

对象方法

RegExp对象方法

exec

1
2
patt.exec(str)
//返回匹配值

test

1
2
patt.test(str)
//返回true false

toString

1
2
3
4
var patt = new RegExp("test", "g");
var res = patt.toString();
//返回 /test/g

支持正则表达式的String对象的方法

search

1
2
3
4
5
str.search("blue")
str.search(/blue/i)
//返回匹配的起始位置,匹配不上为-1

match

1
2
3
str.match(/ain/gi)
//匹配上了返回数组,否则null

replace

1
2
3
str.replace(/blue/g,"red")
//返回的是替换后的string

表单验证实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/*是否带有小数*/
function isDecimal(strValue ) {
var objRegExp= /^\d+\.\d+$/;
return objRegExp.test(strValue);
}
/*校验是否中文名称组成 */
function ischina(str) {
var reg=/^[\u4E00-\u9FA5]{2,4}$/; /*定义验证表达式*/
return reg.test(str); /*进行验证*/
}
/*校验是否全由8位数字组成 */
function isStudentNo(str) {
var reg=/^[0-9]{8}$/; /*定义验证表达式*/
return reg.test(str); /*进行验证*/
}
/*校验电话码格式 */
function isTelCode(str) {
var reg= /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/;
return reg.test(str);
}
/*校验邮件地址是否合法 */
function IsEmail(str) {
var reg=/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+$/;
return reg.test(str);
}