JS正则表达式
一、正则表达式的原理:
1.常用符号
/……/正则表达式的范围 如:/^\d+(\.\d)?$/
^ 表示开始字符 如:/^a /表示以a开始的字符串
$ 表示结束字符 如:/a$ /表示以a结束的字符串(注:若没有起始标识符就表示包含)
+ 表示数量>=1 如:/ab+/表示包含a后面至少一个b的字符串
* 表示数量为0或若干个 如:/ab*/表示包含a后面有0个或者若干个b的字符串
? 表示数量为0或者1个 如:/ab?/表示包含a后面有0个或者1个b的字符串
. 表示任意的字符(除了换行符(/n)) 如 /^a.b$/表示以a开头以b结尾的所有字符串
{n} 表示数量是定值n如:/ab{3}/表示包含a后面有3个b的字符串
{n,}表示数量的最小值是n 如:/ab{1,}/表示包含a后面至少有1个b的字符串
{m,n}表示数量的范围最少m个最多n个 如;/ab{2,4}/表示包含a后面有2到4个b的字符串
[] 表示含有其中一个
[^]表示不含有
i 不区分大小写 如:/a/i
g 全局匹配
m 多行匹配
2.特殊符号
\r,\n 回车和换行
\t 制表符
\d 表示0-9任意的数字
\w 表示任意A~Z,a~z,0~9,_ 符号
\W 除了\w之外的字符
\B 单词的边界 (其两侧都是\w ;如:12,23-red 其中 , 和 - 是 \B)
\s 包括空格、制表符、换页符等空白字符的其中任意一个
\S 所有非空白字符
二、常用方法
0. RegExp 对象
new RegExp(pattern,modifiers);
pattern:正则表达式 modifiers (修饰符) 用于指定全局匹配(g)、区分大小写的匹配(i 忽略大小写)和多行匹配(m)
注意:RegExp中正则表达式pattern参数是一个字符串,所以需要注意转义 比如 new RegExp('^\\s.*$') 等同于/'^\s.*$/
1.test
测试
/^\d+$/.test('123') 返回true或false
2.replace
value=value.replace(/[^\d]/g,'') 只能输入数字
例1:去掉两端空字符串
msg = msg.replace(/^\s+/, '').replace(/\s+$/, '');
例2:每四个字符自动加空格(末尾不需要空格)
str=str.replace(/(\d{4})/g,
'$1 '
).replace(/\s*$/,''
);
3.match(字符串提取)
返回的是字符串数组(加‘g’)
var str = "12312@ww.qqw,3243423@ee.cdss,";
var reg=/\w+@\w+(\.\w+)+/g;
str.match(reg)
结果: ["12312@ww.qqw", "3243423@ee.cdss"]
4.exec
进行匹配查找
如果 exec() 找到了匹配的文本,则返回一个结果数组。否则,返回 null。此数组的第 0 个元素是与正则表达式相匹配的文本,第 1 个元素是与 RegExpObject 的第 1 个子表达式相匹配的文本(用小括号包裹的如果有的话),第 2 个元素是与 RegExpObject 的第 2 个子表达式相匹配的文本(如果有的话),以此类推。除了数组元素和 length 属性之外,exec() 方法还返回两个属性。index 属性声明的是匹配文本的第一个字符的位置。input 属性则存放的是被检索的字符串 string。
例如
var str = "12312@ww.qqw,3243423@ee.cdss,";
var reg=/\w+@\w+(\.\w+)+/g;
var result;
reg.exec(str)
结果:
["12312@ww.qqw", ".qqw", index: 0, input: "12312@ww.qqw,3243423@ee.cdss,", groups: undefined]
while(result=reg.exec(str)){
console.log(result[0])
}
结果:
12312@ww.qqw
3243423@ee.cdss
三、常用正则表达式
1.是否实数 /^(\+|-)?\d+($|\.\d+$)/.test( obj.value )
2.是否正确的邮箱 /^\w+@\w+(\.\w+)+$/
3.是否正确的邮政编码 /^[0-9]{6}$/
4.中文字符 \u4e00-\u9fa5
5.单字节字符 \x00-\xff
6.判断金额 /(^[1-9]\d*(\.\d{0,2})?$)|(^\d(\.\d{0,2})?$)/
7.手机号码 /^1\d{10}$/
8.正数浮点数