一、正则表达式
(一)、定义
-用于定义一些字符串的规则,计算机可以根据正则表达式,来检查一个字符串是否符合规则,获取将字符串中符合规则的内容提取出来
(二)、创建正则
第一种方式
var 变量=new RegExp("正则表达式","匹配模式");
使用typeof检查正则对象,会返回object
var reg=new RegExp("a"); 这个正则表达式可以用来检查一个字符串中是否含有a
在构造函数中可以传递一个匹配模式作为第二个参数,可以是
i 忽略大小写
g 全局匹配模式
第二种方式:
var 变量=/正则表达式/匹配模式 */
使用字面量来创建正则表达式
二、正则的语法
(一)、常用语法
1: 使用|表示或者的意思
2: []里的内容也是或的关系 [ab]==a|b
[a-z] 任意小写字母
[A-Z] 任意大写字母
[A-z] 任意字母
[0-9] 任意数字
3: [^] 除了 查找任何不在方括号之间的字符
<script>
//第一种创建方式:构造函数创建更加灵活(可以传变量)
var reg = new RegExp("ab", "i");
console.log(reg.test("Bcd"));
/*第二种创建方式: 使用字面量来创建正则表达式(更简单,)
语法:
var 变量=/正则表达式/匹配模式 */
var reg = /ab/i;
console.log(reg.test("abca"));
// 语法
//创建一个正则表达式,检查一个字符串中是否有a或者b
/*
1: 使用|表示或者的意思
*/
var reg = /a|b|c/i;
console.log(reg.test("bcd"));
//创建一个正则表达式检查一个字符串是有有字母
/*
2: []里的内容也是或的关系 [ab]==a|b
[a-z] 任意小写字母
[A-Z] 任意大写字母
[A-z] 任意字母
[0-9] 任意数字
*/
reg = /[a-z]/i;
//检查一个字符串中是否含有abc或adc或aec
reg = /a[bde]c/; //或b或d或e和a c
console.log(reg.test("abc"));
/* 3: [^] 除了 查找任何不在方括号之间的字符 */
reg = /[^ab]/; //除了a或b,只要有ab以外的存在
console.log(reg.test("abc")); //true
</script>
(二)、常用语法二
1:量词
—通过量词可以设置一个内容出现的次数
—量词只对它前边的一个内容起作用
—{n}正好出现n次
—{m,n}出现m-n次
—{m,}m次以上
—+ 至少出现一次,相当于{1,}
—* 0个或多个,相当于{0,}
— ? 0个或1个,相当于{0,1}
2: 检查一个字符串中开头,结尾
^a 表示开头
$ 表示结尾
如果在正则表达式中,同时使用^$,则要求字符串必须完全符合正则表达式
<script>
/*
创建一个正则表达式检查一个字符串是否含有aaa
*/
var reg = /a{3}/; //==/aaa/
reg = /ab{3}/; //abbb
reg = /(ab){3}/; //ababab
reg = /ab{1,3}c/; //b出现1-3次皆可
reg = /ab+c/; //至少一个b
reg = /a?bc/; //0个或1个a
reg = /a*bc/; //有没有a都行
//console.log(reg.test("bc"));
/*
2: 检查一个字符串中是否以a开头
^a 表示开头
$ 表示结尾
如果在正则表达式中,同时使用^$,则要求字符串必须完全符合正则表达式
*/
reg = /^a/; //匹配开头的a
reg = /a$/; //匹配结尾的a
reg = /^aa$/;
reg = /^a|a$/; //以a开头或者以a结尾
console.log(reg.test("a"));
/*
手机号的规则:
1:以1开头;
2:第二位3-9的任意数字;
3:三位以后任意数字9个;
^1 [3-9] [0-9]{9}$
创建一个正则表达式,用来检查一个字符串是否是一个合法手机号
*/
var phoneStr = "183o6789012";
var phoneReg = /^1[3-9][0-9]{9}$/;
console.log(phoneReg.test(phoneStr));
</script>
(三)、常用语法三
1: .表示任意字符
2: 在正则表达式中使用\作为转义字符
注意:使用构造函数时,由于它的参数是一个字符串,而\是字符串中转义字符,
如果要使用\则需要使用\\来代替
3:
\w -任意字母,数字,_
\W -除了字母、数字、_
\d -任意数字[0-9]
\D -除了数字[^(0-9)]
\s -空格
\S -除了空格
\b -单词边界
\B -除了单词边界
<script>
var reg=/\./;// .
reg=/\\/;// \
reg=new RegExp("\.")//在字符串中,要用\作为转义字符
reg=/\W/;
/* 创建一个正则表达式检查一个字符串中是否有单词child */
reg=/\bchild\b/;//保证前后都没有,这是独立的单词
// console.log(reg.test("hello,children"))
/* 接收一个用户的输入 */
// var str=prompt("请输入你的用户名:")
//去除字符串中的空格
str=" he llo ";
// str=str.replace(/\s/g,"");
//去除开头的空格
//str=str.replace(/^\s*/,"")
//去掉结尾的空格
//str=str.replace(/\s*$/,"")
// str=str.replace(/^\s*|\s*$/g,"");//匹配开头和结尾的空格
str=str.trim();
console.log(str);
</script>
四、正则中表达式 test()
test() 方法是正则表达式的一个方法,用于检测一个字符串是否匹配某个模式.
test 方法检查字符串是否与给出的正则表达式模式相匹配,如果是则返回 true,否则就返回 false。
每个正则表达式都有一个 lastIndex 属性,用于记录上一次匹配结束的位置.
语法:regexp.test(str)
var str="a";
var res=reg.test(str);
console.log(res);
console.log(reg.test("cb"))
五、常用的正则表达式
// 验证帮助
var verifyUtils = {
// 验证输入的内容是否是空
isNull:function(idStr){
var str = document.getElementById(idStr).value.trim();
var regex = /\S/;
if(!regex.test(str)){
alert("文本框不能为空,请输入内容!");
}
},
// 验证输入的字符是否是英文字母
isLetter:function(idStr){
var str = document.getElementById(idStr).value.trim();
var regex = /^[a-zA-Z]+$/;
if(!regex.test(str)){
alert("请输入正确的英文字母!");
}
// 验证日期格式是否为YYYY-MM-DD格式
},isDate:function(idStr){
var str = document.getElementById(idStr).value.trim();
var regex = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
var r = str.match(regex); // 使用match方法获取指定字符串的值
if(r==null){
alert("请输入正确的日期格式!");
}
// 验证日期格式是否为YYYY-MM-DD hh:mm:ss格式
},isDateTime:function(idStr){
var str = document.getElementById(idStr).value.trim();
var regex = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
var r = str.match(regex); // 使用match方法获取指定字符串的值
if(r==null){
alert("请输入正确的日期格式!");
}
// 验证整数
},isInteger:function(idStr){
var str = document.getElementById(idStr).value.trim();
var regex = /^[-+]?\d*$/;
if(!regex.test(str)){
alert("请输入正确的整数!");
}
// 验证双精度
},isDouble:function(idStr){
var str = document.getElementById(idStr).value.trim();
var regex = /^[-\+]?\d+(\.\d+)?$/;
if(!regex.test(str)){
alert("请输入正确的小数!");
}
// 验证中文
},isChinese(idStr){
var str = document.getElementById(idStr).value.trim();
var regex = /^[\u0391-\uFFE5]+$/;
if(!regex.test(str)){
alert("请输入正确的中文!");
}
// 验证邮箱
},isEmail(idStr){
var str = document.getElementById(idStr).value.trim();
var regex = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
if(!regex.test(str)){
alert("请输入正确的邮箱格式!");
}
// 验证手机号
},isPhone(idStr){
var str = document.getElementById(idStr).value.trim();
var regex = /^1[3456789]\d{9}$/;
if(!regex.test(str)){
alert("请输入正确的手机号!");
}
// 验证身份证
},isIdCard(idStr){
var str = document.getElementById(idStr).value.trim();
var regex = /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/;
if(!regex.test(str)){
alert("请输入正确的身份证号码!");
}
}
};