最近复习正则表达式知识,随手整理份笔记,便于后期复习巩固~
1、RegExp 对象
创建RegExp对象的两种方式:
(一)构造函数方式:
var reg = new RegExp("表达式", "附加参数");
(二)普通方式
var reg = /表达式/附加参数;附加参数是可选的,用来拓展正则表达式的含义,主要有三个参数:
①、g:全局匹配;
②、i:匹配时忽略大小写;
③、m:多行匹配;
RegExp对象API:
(一)、test(String);
该方法检查一个字符串中,是否存在创建RegExp对象实例时指定的正则表达式,存在则返回true,否则返回false;
语法为:regExpObject.test(String);
示例:
# 构造函数方式:
<script type="text/javaScript">
var str = "hello world!"
var reg = new RegExp("world", "i"); // 忽略大小写匹配“world”
var result = reg.test(str); // 检查str中是否存在“world”
document.write(result); // true
</script>
#普通方式:
<script type="text/javascript">
var str="HELLO WORLD";
var regExp=/world/i; // 忽略大小些匹配world
var result=regExp.test(str);
document.write(result); //true
</script>
(二)、exec(String);
使用RegExp对象对象示例创建时指定的正则表达式,搜索字符串中满足正则表达式的字符位置,返回所有满足正则表达式的字符位置组成的数组;
语法:regExpObject.exec(str);
示例:
<script type="text/javaScript">
var Str = "我爱我的家乡,我的家乡很漂亮";
var regExp = /我/;
var result = regExp.exec(Str); // 搜索“我爱我的家乡,我的家乡很漂亮”中,“我”的所有位置
document.write(result);
</script>
2、正则表达式的元字符
限定符
(一)、{n}:规定前面的字符或组合项要连续出现n次;
示例:
<script type="text/javaScript">
var str = "thehel";
var regExp = /(he){3}/
var result = regExp.test(str); // 检查“thehel”中是否包含了3个“he”
document.write(result); // false
</script>
(二)、{n,m}: 规定前面的元素或组合项至少连续出现n次,至多连续出现m次 。注意n<m,并且逗号和数字之间不能有空格;
示例:
<script type="text/javaScript">
var str = "thehel";
var regExp = /(he){1,3}/
var result = regExp.test(str); // 检查“thehel”中是否包含了1到3个“he”
document.write(result); // true
</script>
(三)、+:规定前面的元素或组合必须出现一次或连续出现多次,等效于{1};
示例:
<script type="text/javaScript">
var str = "thehel";
var regExp = /(he)+/ // 等效于 /(he){1}/
var result = regExp.test(str); // “thehel”中必须包含1“he”,或连续多个
document.write(result); // true
</script>
(四)、*:规定前面的元素或组合项可以出现零次或连续出现多次,等效于{0};
示例:
<script type="text/javaScript">
var str = "thehel";
var regExp = /(he)*/ // 等效于 /(he){0}/
var result = regExp.test(str); // “thehel”中不包含“he”,或连续出现多个“he”
document.write(result); // true
</script>
(五)、?:规定前面的元素或组合项出现零次或一次;等效于{0,1};
示例:
<script type="text/javaScript">
var str = "thehel";
var regExp = /(thel)?/ // 等效于 /(thel){0}/
var result = regExp.test(str); // “thehel”中不包含“thel”,或一个“thel”
document.write(result); // true
</script>
选择匹配符
选择匹配符有且仅有一个,即 "|" 字符,用于先择匹配两个选项中的任意一个;
示例:
<script type="text/javaScript">
var str = "thehel";
var regExp = /the|tel/ // 匹配“the” 或 “tel”
// var regExp = /(the|tel)1/ // 匹配“the1” 或 “tel1” 相同部分,可以放在括号后面
var result = regExp.test(str); // “thehel”中是否包含“the”或“tel”
document.write(result);
</script>
字符匹配符
(一)、[...]:匹配中括号中包含的字符集中的任意一个字符
示例:
<script type="text/javaScript">
var str = "thehel";
var regExp = /[abc]/ // 匹配“a” 或 “b” 或 “c”
var result = regExp.test(str); // “thehel”中是否包含“a” 或 “b” 或 “c”
document.write(result); // false
</script>
(二)、[^...]:匹配中括号中未包含的任何字符;
示例:
<script type="text/javaScript">
var str = "thehel";
var regExp = /^[abc]/ // 匹配除“a” 或 “b” 或 “c”,之外的任意字符
var result = regExp.test(str); // “thehel”中是否包含“a” 或 “b” 或 “c”之外的任意字符
document.write(result); // true
</script>
(三)、[a-z], [0-9]:匹配a-z,0-9的任意字符;
(四)、[^a-z], [^0-9]:匹配不在a-z,0-9范围内的任意字符;
示例:规则同理~
<script type="text/javaScript">
var str = "12dda";
var regExp = /[0-9]/ // 匹配0到9之间的任意字符
// var regExp1 = /^[0-9]/ // 匹配0到9之外的任意字符
var result = regExp.test(str); // 检查“12dda”中是否包含0到9之间的任意数字字符
document.write(result); // true
</script>
(五)、\d:匹配任意一个数字字符,等效于[0-9];
(六)、\D:匹配任意一个非数字字符;
(七)、\s:匹配任意空白字符,比如空格、制表符等;
(八)、\S:匹配任意非空白字符;
(九)、\w:匹配任何英文字母、数字或下划线。等效于[A-Za-z0-9_];
(十)、\W:匹配任务非英文字母或数字的字符,且不包含下划线。等效于[^A-Za-z0-9_];
(十一)、.:匹配除换行符\n之外的任何单字符;
3、常用的正则表达式
- 邮箱:^\w+@\w+.[a-zA-Z]{2,3}(.[a-zA-Z]{2,3})?$;
- 邮政编码:^\d{6}$
- 匹配字符串中的中文:[\u4e00-\u9fa5]
- 身份证:^[1-8][1-7]\d{4}(?:19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}[\dX]$
- 手机号:^1[34578]\d{9}$