所有的正则表达式,都被统一放在了网上,你只要想用,百度搜索就可以了
不用我们自己写新的正则表达式,我们只要会使用,基本能看懂就行了
什么是正则表达式:
正则表达式严格来说,是一个语法规范,验证规范
对于 字符串 内容 规范的验证
正则表达式语法规范:
1.正则表达式的内容,必须写在 / / 之间
相当于 字符串 必须写在 ' ' 引号之间
2.使用正则表达式:
(1) 验证: test()
执行结果是 符合验证规范,结果是 true
不符合验证规范,结果是 false
正则表达式.test(字符串) 验证字符串是否符合正则表达式规范
let str1 = 'abc';
let reg1 = /\d/;
console.log( reg1.test(str1) ); //false
(2) 捕获: exec()
获取 符合 验证规范的内容
执行结果是一个伪数组
var str="Hello world!";
//查找"Hello"
var patt=/Hello/g;
var result=patt.exec(str);
document.write("返回值: " + result); //Hello
//查找 "RUNOOB"
patt=/RUNOOB/g;
result=patt.exec(str);
document.write("
返回值: " + result); //null/code>
3.正则表达式的语法:
元字符
单独使用元字符,只要有符合规范的内容就行,不需要完全符合
\d 数字 只要有数字就行,不用都是数字
\D 非数字
\w 数字,字母,下划线
\W 非数字,字母,下划线
\s 空格
\S 非空格
边界符
^ 起始 写在 正则表达式开始的位置
$ 结束 写在 正则表达式结束的位置
^ 独立使用 起始边界符 表示 必须以符合规范的内容起始 之后的内容没有限制
$ 独立使用 结束边界符 表示 必须以符合规范的内容结束 之前的内容没有限制
^正则$ 只能是一个符合规范的字符
let reg1 = /^\d/; // 数字开头
let reg2 = /\d$/; // 数字结尾
let reg3 = /^\d$/; // 只能有一个数字
限定符
显示内容字符个数的正则表达式
一般要与 起始和结束符号一起使用, 独立使用要出问题
* 0 至 正无穷 个字符 可以没有,可以有无穷多个
+ 1 至 正无穷 个字符 至少有一个字符
? 0 至 1 个字符 可以没有,最多有一个
{n} 只能有n个字符
{n,} n 至 正无穷个字符串
{n,m} n 至 m 个字符串
限定符 一定要和 ^ $ 起始结束边界符配合使用
let reg1 = /^\d*$/; // 从开始到结束,可以有 0-正无穷个数字字符,不能有其他字符
let reg2 = /^\d+$/; // 从开始到结束,可以有 1-正无穷个数字字符,不能有其他字符
let reg3 = /^\d?$/; // 从开始到结束,可以有 0-1 个数字字符,不能有其他字符
let reg4 = /^\d{5}$/; // 从开始到结束,只能有 5个数字字符,不能有其他字符
let reg5 = /^\d{5,}$/; // 从开始到结束,可以有 5 - 正无穷个数字字符 ,不能有其他字符
let reg6 = /^\d{5,6}$/; // 从开始到结束,可以有 5 - 6 个数字字符 ,不能有其他字符
特殊符号
| 逻辑运算符 表示逻辑或
() 将()中的内容,作为一个整体来验证
一般每一个条件都会使用()包裹,确保执行顺序的正确
[ ] 表示符合[]中定义的任意一个内容就可以
每次设定,都是匹配一个字符,不能匹配多个字符
逗号间隔,就是独立的一个字符的匹配
如果没有逗号间隔,就是一个整体验证,只要是字符内容,符合[]中的内容就可以,顺序等无所谓
注意: [] 中 有没有逗号,是两种验证语法
a-b 只要是 a - b 范围内的内容,都可以
[^] 非符合的内容,就是逻辑非
写在正则表达式 // 外的 一般是与 函数配合使用
//g 全局匹配
//i 不区分大小写
var str1="1234567"
let reg1 = /^\d{6,9}\w{5,7}$/; //6到9个数字加5到7个数字子母下划线
let reg2 = /^(\d{6,9})|(\w{5,7})$/; // 6到9个数字或者5到7个数字子母下划线
console.log(reg1.test(str1)); // false
console.log(reg2.test(str1)); // ture
var str2="niahao"
let reg3 = /^[nihao,hellow]+$/ ;
let reg4 = /^[a-z]+$/ ;
console.log(reg3.test(str2)); // ture
console.log(reg4.test(str2)); // ture
配合函数
search() 查询是否有这个数据字符串
效果有与 indexOf() 相同
indexOf() 不支持正则表达式
let str = 'abcdefg';
console.log( str.search('g') );
console.log( str.search('G') );
// /G/ 使用正则表达式,查找 G大写字母G
// /G/i 使用正则表达式,查找 G 大写字符G 同时不区分大小写,也就是 大写G 小写g 都算匹配
console.log( str.search( /G/ ) );
console.log( str.search( /G/i ) );
replace() 字符串替换
默认值替换符合规范的第一个内容 --- 懒惰模式
let str2 = 'abcabcabc';
// 默认只替换第一个a
str2 = str2.replace( 'a' , '北京' );
// 使用正则表达式,替换所有
// /a/g 替换字符串中所有的 a 字符
str2 = str2.replace( /a/g , '北京' );
console.log(str2);
Comments | NOTHING