1.定义方式
对象定义方式
var reg = new RegExp([abc]);
字面量方式
var reg = /def/;
2.test方法
//验证abc这个字符串是否满足reg那个正则表达式
console.log(reg.test("abc"));
3.正则内部类
1.预定义类
. | 有没有除了换行和回车以外的字符 |
\d | 数字字符 |
\D | 非数字字符 |
\s | 空白字符 |
\S | 非空白字符 |
\w | 单词字符 |
\W | 非单词字符 |
例如:
console.log(/./.test("\n\r"));
console.log(/./.test(" "));
2.简单类
/abc/只能多,不能少
console.log(/abc/.test("ab"));
console.log(/abc/.test("abdfc"));
console.log(/abc/.test("abcdef"));
/[abc]/只包含其中一部分就可以
console.log(/[abc]/.test("ab"));
console.log(/[abc]/.test("abdfc"));
console.log(/[abc ]/.test("abcdef"));
3.负向类
不能是其中的整体或一部分
/[^abc]/不包含其中的任何一部分,少于或正好返回false,多了或者没有返回true
console.log(/[^abc]/.test("ab"));
console.log(/[^abc]/.test("abdfc"));
console.log(/[^abc]/.test("abcdef"));
4.范围类
有时匹配的东西过多,而且类型又相同,全部输入太麻烦,可以在中间加个横线
console.log(/[a-z]/.test("111"));
console.log(/[a-z]/.test("b"));
5.组合类
用中括号匹配不同类型的单个字符
//只要包含小写字母或者数字
console.log(/[a-z0-9]/.test("B"));
console.log(/[a-z0-9]/.test("9b"));
4.边界
^会匹配行或字符串的起始位置
$会匹配行或字符串的结尾位置
^$表示精确匹配
console.log(/^lucy/.test("lucyName"));
console.log(/lucy$/.test("Namelucy"));
console.log(/^lucy$/.test("lucy"));
5.量词
*表示大于等于0个
console.log(/^a*$/.test("aa"));
console.log(/^a*$/.test(""));
console.log(/^a*$/.test("ab"));
+表示大于等于1个
console.log(/^a+$/.test(""));
//输出false
?表示 0 或 1个
console.log(/^a?$/.test("a"));
//true
console.log(/^a?$/.test("aa"));
//false
{n} 表示只能有 n 个
console.log(/^a{3}$/.test("aa"));
//false
console.log(/^a{3}$/.test("aaa"));
//true
{n,}表示 大于等于 n个
console.log(/^a{3,}$/.test("aaa"));
//true
console.log(/^a{3,}$/.test("aaaaaa"));
//true
{n,m}表示n 到 m个
console.log(/^a{1,3}$/.test("a"));
//true
console.log(/^a{1,3}$/.test("aaa"));
//true
console.log(/^a{1,3}$/.test("aaaa"));
//false
| 表示或
// 包含abc或者xyz
console.log(/(abc) | (xyz)/);
6.举例
1.判断给定字符串是否包含数字
function containsNumber(str) {
return /[0-9]/.test(str);
}
2.判断是否以元音字母(a,e,i,o,u以及他们的大写)结尾
function endsWithVowel(str) {
return /[aeiouAEIOU]$/.test(str);
}
3.判断字符是否是xxx-xxx-xxxx的形式,x为number类型
function matchesPattern(str) {
return /^\d{3}-\d{3}-\d{4}$/.test(str);
}