特殊字符和转义序列
1、[...] 位于括号内的任意字符
/[abcde]/.test('aboot'); // 只要含有任意一个字符返回 true
/a[bo]t/.test('abot'); // false 中间只能含有其中一个字符,匹配'abt'或'aot'
2、[^...] 不在括号中之中的任意字符
/a[^bo]t/.test('ast'); // true a|t之间不含有b、o期中一个字符
*3、. 除了换行和Unicode行止符之外的任意字符
/a.t/.test('a*t'); // true , 'a\nt'换行false,使用 \.来进行转义
4、\w 任何ASCII字符,等于[a-zA-Z0-9_]
/\w/.test('think'); // true, 不含有其它字符
5、\W 任何非ASCII字符单字字符,等于[^a-zA-Z0-9_]
/\w/.test('think'); // false, 至少需要有一个特殊字符
6、\s 任何空格
/\s/.test('I think'); // true
7、\S 不包含空格
/\s/.test('I think'); // false, 非空格为true
8、\d 任何数字,等于[0-9]
9、\D 除了数字之外的任意字符
10、\b 单词边界
例: 匹配 hi 这个词,如果写成 /hi/ 这样 'wordhibiry are you' 也会匹配,如果加\b会单词的分界空格处来匹配, /hi\b/.test('word hi biry are you'); true
11、\B 非单词边界
指定匹配的位置
1、^ 匹配字符串的开头
/^ab/.test('absolute'); // true 以ab开头
2、$ 匹配字符串的结尾
/te$/.test('absolute'); // true 以te结尾
* 3、? ! 一个反前向声明者,含义与反前向声明相反
选择、分组和引用
1、| 用于分隔选择的字符,相当于或
/oa|on|op/.test('option'); // true,只要带有oa、on、op都匹配
2、(...) 分组,相当于并且
/(\d+&)([a-zA-Z]+%)/.test('1234&abcde%'); // true, 必须包含数据+&,并且还包含英文字母+%
* 3、(?...) 只组合,把项组合到一个单元,但不记忆与该组匹配的字符
(?:):
(?!):
(?<=):
(?<!):
重复
1、{ } 匹配一个字符的重复 **** 注意{3,10} 逗号后不能有空格, 如{3, 10}
/^\d{1,3}$/: 最少2个数字,最多4个数字
/^\d{4,}$/: 最少有4个数字
/^\d{4}$/: 只能有4个数字
2、* 表示0次或多次重复,等价于{0, } /^\d*$/
3、?最少0次, 最多1次重复,等价于{0,1}
4、+ 表示最少出现1次,等价于{1,}
5、\1、\2 重复的子项
var reg = /(a)(b)(c)\1/;
var str = "abca";
// 返回 true: \1是重复第一个子项(a),相当于/(a)(b)(c)(a)/. \2就是第二项(b)
console.log(reg.test(str));
修饰符,高级匹配
1、g 匹配的是全局,检索字符串的所有匹配
如果不加g只匹配第一个后就退出
let reg = /你妈的|去你妈|傻逼/g;
let content = '你妈的房子傻逼是用来住的你妈的不是用来炒的去你妈的吧';
content = content.replace(reg, '***');
console.log(content) // ***房子***是用来住的***不是用来炒的***的吧
2、i 匹配忽略大小写
/java/i.test('JavdaScript'); // true
3、m 进行多行匹配
常用方法
1、match(reg) 将匹配结果返回一个数组
var arr = '123kasdo34kk234k234234k'.match(/\d+/g); // 如果不加g,只返回第一个
console.log(arr); // ["123", "34", "234", "234234"]
2、test() 如果没有匹配返回false否则返回true
3、search(reg) 查找并返回所在的位置,如果没有匹配的返回-1
var result = '房地产行业究竟是白银时代还是钻石时代'.search(/钻石/);
console.log(result); // 返回 8
4、content.replace(reg, str) 用于执行检索和替换操作
5、exec() [ɪɡ'zek] 如果找到返回一个数组并存放匹配的结果,如果没有找到返回null
var result = /白银|钻石/g.exec('房地产行业究竟是白银时代还是钻石时代');
console.log(result); // ['']
整理经验
1、如果检查全部需要前后加匹配
/\d+/ 只对字符中存在数字就匹配
/^\d+$/ 对字符中全部为数字的进行匹配
2、test()、exec()是对每一个字符串进行匹配,如果为true就不会往下执行,并返回true
例如: 匹配字符中不能带有.字符
/[^\.]/.test('123123.'); // 返回true,因为第一个字符就不是.返回true不在往下执行
/[\.]/.test('23412.34'); // 如果存在就返回true
或者
/^[^\.]$/g.test('asdfa.sdf') // 返回true
3、| 或符号只能用到()中,不能在[]中使用
常用示例
1、密码强度
// 弱密码 - 纯数字、纯字母或纯特殊字符
/^(?:\d+|[a-zA-Z]+|[!@#$%^&*]+)$/
// 中密码 - 字母+数字,字母+特殊字符,数字+特殊字符
/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&*]+$)[a-zA-Z\d!@#$%^&*]+$/
// 强密码 - 必须有数字、小写字母、大写字母和特殊字符
/^(?=.*((?=[!@#$%^&*_]+)[^A-Za-z0-9]))(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[^\u4e00-\u9fa5]{8,16}$/
2、手机号码验证
/^(139|138|137|136|135|134|178|170|188|187|183|182|159|158|157|152|150|147|139|186|185|170|156|155|130|131|132|189|180|170|153|133)(\d){8}$/.test('13012345678')
移动号段: /^(139|138|137|136|135|134|178|170|188|187|183|182|159|158|157|152|150|147|139)(\d){8}$/;
联通号段: /^(186|185|170|156|155|130|131|132)(\d){8}$/
电信号段: /^(189|180|170|153|133)(\d){8}$/
3、验证Email - /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
4、验证中文 - /^[\u4e00-\u9fa5]+$/
5、域名验证 - /^(http(s)?:\/\/)(www)?\.\w+\.(com|cn|net|org)$/
6、手机号前带86或是+86 - /^((\+86)|(86))?(13)\d{9}$/
7、电话号码与手机号码同时验证 - /(^(\d{3,4}-)?\d{7,8})$|(13[0-9]{9})/
8、验证IP地址 - /^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$/; // 匹配0-255, 匹配'255.255.255.255'
9、邮政编码 - /[1-9]{1}(\d+){5}/
10、身份证号码 - /\d{18}|\d{15}/
11、双字节字符串(汉字) - /[^\x00-\xff]*/
12、去除两端空格 - /^\s*|\s*$/
数字正则
/^\d+$/ - 非负整数(正整数 + 0)
/^[1-9](\d)+$/ - 正整数(不可以以0开头)
/^-(\d)+$/ - 非正整数(负整数 + 0)
/^-[1-9]?(\d){0,}$/ - 负整数(-12345), 不可以-012312
/^[1-9]?(\d)+\.(\d)+$/ - 浮点数
/^[+-]?\d+(\.\d{1,2})?$/ - 可以是整数 或 浮点数,并且小数点只能后两位
^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$ //正浮点数
^((-\\d+( //非正浮点数(负浮点数 + 0)
^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$ //负浮点数
/^[A-Za-z]+$/ - 由26个英文字母组成的字符串
/^[A-Z]+$/ - 由26个英文字母的大写组成的字符串
/^[a-z]+$/ - 由26个英文字母的小写组成的字符串
/^[A-Za-z0-9]+$/ - 由数字和26个英文字母组成的字符串
/^\w+$/ - 由数字、26个英文字母或者下划线组成的字符串
国内查看评论需要代理~