📃个人主页:不断前进的皮卡丘
🌞博客描述:梦想也许遥不可及,但重要的是追梦的过程,用博客记录自己的成长,记录自己一步一步向上攀登的印记
RegExp是正则表达式的缩写,使用正则表达式可以对某一个文本进行模式匹配,我们可以把它看成是对字符串描述的一种规则
语法:/匹配规格/修饰符
语法:new RegExp(匹配规则,修饰符)
// 正则表达式:字符串的匹配规则
// 定义正则表达式,方式1
let regExp1 = /abc/ /* 判断是否包含字符串abc */
// 定义正则表达式,方式2
let regExp2 = new RegExp('abc') /* 判断是否包含字符串abc */
var rep=/abc/; //正则规则是否包含abc
var str='abcdefgabcde'.replace(rep,'x');
console.log(str);
修饰符 | 描述 |
---|---|
i | 执行对大小写不敏感的匹配 |
g | 执行全局匹配 |
元字符是有特殊含义的字符
字符 | 描述 |
---|---|
. | 匹配除了"\n"以外的任何单个字符 |
\d | 匹配一个数字字符 |
\D | 匹配一个非数字字符 |
\s | 匹配任何空白字符,包括空格,制表符,换页符等 |
\S | 匹配任何非空白字符 |
\w | 匹配包括下划线的任何单词字符,等价于’[A-Z,a-z,0-9]’ |
\W | 匹配任何非单词字符 |
/*
元字符:
. 表示任意一个字符
\s 表示空格
\S 表示非空格
\d 表示数字
\D 表示非数字
\w 表示字母或数字
\W 表示非字母或数字
*/
let regExp = /\d/
console.log('aa11bb', regExp.test('aa11bb'))
console.log(/\s/.test('aa11bb'))
console.log(/\w/.test('中国1'))
字符 | 描述 |
---|---|
^ | 匹配输入字符串的开始位置 |
$ | 匹配输入字符串的结束位置 |
/*
^: 前缀,表示以什么开头
$: 后缀,表示以什么结尾
*/
console.log(/^\d/.test('abc'), /^\d/.test('ab2c'), /^\d/.test('2abc'))
console.log(/^a/.test('abc'), /^ac/.test('abc'))
console.log(/a$/.test('abca'), /\d$/.test('abc2'))
//只有ab符合 //1+数字才符合
console.log(/^ab$/.test('ab'), /^1\d$/.test('15'))
字符 | 描述 |
---|---|
+ | 匹配前面的子表达式一次或者多次,比如zo+可以匹配zo以及zoo,但是不可以匹配z |
? | 匹配前面的子表达式零次或者一次。比如do(es)?可以匹配do或does中的do |
{n} | n是非负整数,匹配确定的n次,比如o{2}不可以匹配Bob中的o,但是可以匹配foot中的两个o |
{n,} | n是非负整数,至少匹配n次,比如o{2,}不可以匹配Bob中的o,但可以匹配fooood中的所有o.o{1,}等价于o+,o{0,}等价于o |
{n,m} | m,n都是非负整数,n<=m,最少匹配n次而且最多匹配m次 |
/*
量词
+ 表示至少1个
? 表示最多1个
{n} 表示n个
{n,} 表示至少n个
{n, m} 表示n个和m个之间
*/
console.log(/\d+/.test('aab2bcc'))
console.log(/\d?/.test('aabbcc'))
console.log(/\d{2}/.test('aab5da1dd5bcc'))
console.log(/^1\d{3}$/.test('1342'))
/*
[xyz], 表示字母的范围,x或y或者z即可
[1, 2, 3], 表示数值的范围,在1,2,3取1个
取反
[^xy], 不能x或者y
[a-z], 表示从a到z, 比如[c-h]
[A-Z], 表示从A到z
[1-5], 表示1到5
*/
console.log(/[ab]/.test('ac'))
console.log(/^1[ab]\d$/.test('1ab5'))
console.log(/[^ab]/.test('ac'))
console.log(/[b-e]/.test('xycz'))
console.log(/[2-6]/.test('x5ycz'))
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="common.js"></script>
<script>
// 需求:判断一个字符串是否是标准的手机号码
let phone = '18688888888'
let flag = isPhone(phone)
if(flag) {
// 进行下一步
alert('正确的手机号码')
} else {
// 拦截提示
alert('请输入正确的手机号码')
}
</script>
</head>
<body>
</body>
</html>
// 判断一个字符串是否是标准的手机号码
function isPhone(phone) {
// 定义手机号码的正则规则
//后面八位都是数字
let regExp = /^1[3,5,8][5,6]\d{8}$/
console.log(phone)
console.log(regExp.test(phone))
return regExp.test(phone);
}