创建
// 使用字面量形式
var expression = / pattern / falgs
// 使用构造函数
var pattern = new RegExp("pattern","flags")
flgs可有一或多个:
- g 被应用于所有字符串
- i 不区分大小写
- m 到达一行末尾时还会继续查找下一行
常用方法
search()
返回第一个与 regexp 相匹配的子串的起始位置
// 搜索指定字符串,不区分大小写
var str = "learning";
var n = str.search(/learn/i); // 0
replace()
var str = "zhang yingji";
var txt = str.replace("yingji","xixi");
test()
验证是否匹配时常用
if(pattern.test(text)) {
alert("matched")
}
exec()
返回一个数组,第0个元素是与正则表达式相匹配的文本,第1个元素是与RegExpObject的第1个子表达式相匹配的文本(如果有的话)。如果未找到匹配,则返回值为 null
var str = "I love learning";
var reg = /learn/;
var result = reg.exec(str);
console.log(result);
// [ 'learn', index: 7, input: 'I love learning', groups: undefined ]
正则表达式模式
- 方括号用于查找某个范围内的字符:
[abc] 查找[]内的任意字符
[^abc] 查到任何不在[]内的字符
[0-9] 查找任何0到9的数字 \d
(x|y) 查找任何指定的选项
- 元字符
# 元字符需要转义:([{\^$|)>*+.]}
\0 查找NULL
\b 匹配单词边界 \B 非
\d 查找数字 \D
\n 查找换行符
\r 查找回车符
\s 查找空白字符 \S
\w 查找单词字符 \W
# 单词字符包括:a-z、A-Z、0-9,以及下划线, 包含 _ (下划线) 字符。
\xxx 查找以八进制数 xxx 规定的字符
\xdd 查找以十六进制数 dd 规定的字符
\uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符
- 量词
n+ 匹配任何包含至少一个 n 的字符串
n* 匹配任何包含零个或多个 n 的字符串
n? 匹配任何包含零个或一个 n 的字符串
n{x} x个n
n{x,y} n 连续出现至少 X 次,至多 Y 次时匹配
^n 以n开头的字符串
n$ 以n结尾的字符串
?=n 匹配任何其后紧接指定字符串 n 的字符串 ?!n 非
实例
判断钱
const moneyReg = /^(([1-9][0-9]?|0)\.\d+$)|^([1-9][0-9]?|0)$/
// 保留到小数两位
const moneyReg = /^(([^0][0-9]?|0)\.([0-9]{1,2})$)|^([^0][0-9]?|0)$/
判断输入是否为数字、字母、下划线组成
function isValid(str) {
return /^\w+$/.test(str);
}
判断字符串是否全部为字母/数字/中文
function isLetter(str){
// 字母
return /^[a-zA-Z]+$/.test(str);
// 数字
// return /^\d+$/.test(str);
// 中文
// return /^[\u4E00-\u9FA5]{2,4}$/.test(str);
}
判断是否由8位数字组成
function isEigNum(str) {
return /^\d{8}$/.test(str);
}
判断是否有小数
function isDecimal(str){
return /^\d+\.\d+$/.test(str);
}
校验电话号码、手机号码格式
function isTel(str) {
return /^((0\d{2,3}-)?\d{7,8})|(1[3|4|5|7|8][0-9]\d{8})$/.test(str);
}
校验邮件地址
function isMail(str) {
return /^\w+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(str);
}
检验IP地址的合法性
// (1~255).(0~255).(0~255).(0~255)
function isValidIP(ip) {
// 1位或2位|1xx|200~249|250~255
var reg = /^(\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])$/
return reg.test(ip);
}
获取URL参数
function getParams () {
let str = window.location.href.split('?')[1];
let arr = str.split('&');
let params = {};
for (let i = 0; i < arr.length; i++) {
params[arr[i].split('=')[0]] = arr[i].split('=')[1];
}
return params;
}