正则规则
1、配制
- g:表示全局,匹配全部
- i: 表示不区分大小写
- m:表示匹配多行(匹配换行两端的潜在匹配)
2、规则如下
2.1、非打印字符
\n 匹配一个换行符。
\r 匹配一个回车符。
\s 匹配任何空白字符。
\S 匹配任何非空白字符
\ 转义符
2.2、描述字符
\d 匹配一个字数字符,/\d/ = /[0-9]/
\D 匹配一个非字数字符,/\D/ = /[^0-9]/
\w 匹配一个字母、数字、下划线,等于[a-zA-Z0-9]
\W 匹配一个非字母、数字、下划线,等于[^a-zA-Z0-9]
. 匹配除行结束符意外的任何字符
2.3、特殊字符
^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。
$ 匹配输入字符串的结尾位置
( ) 标记一个子表达式的开始和结束位置
[xyz] 匹配这个集合中的任意一个字符(或元字符)
[^xyz] 匹配不在这个集合中的任何一个字符
[0-9] 查找从 0 至 9 范围内的数字,即查找数字
[a-z] 查找从小写 a 到小写 z 范围内的字符,即查找小写字母
[A-Z] 查找从大写 A 到大写 Z 范围内的字符,即查找大写字母
[A-z] 查找从大写 A 到小写 z 范围内的字符,即所有大小写的字母
| 指明两项之间的一个选择
2.4、限定符
* 匹配前面的子表达式零次或多次
+ 匹配前面的子表达式一次或多次
? 匹配前面的子表达式零次或一次
{n} n 是一个非负整数。匹配确定的 n 次。
{n,} n 是一个非负整数。至少匹配n 次。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。
2.5、断言
-
(?=pattern)
正向先行断言
代表字符串中的一个位置,紧接该位置之后的字符序列能够匹配 pattern。
-
(?!pattern)
负向先行断言
代表字符串中的一个位置,紧接该位置之后的字符序列不能匹配 pattern
-
(?<=pattern)
正向后行断言
代表字符串中的一个位置,紧接该位置之前的字符序列能够匹配 pattern。
-
(?<!pattern)
负向后行断言
代表字符串中的一个位置,紧接该位置之前的字符序列不能匹配 pattern。
常用正则验证
1、 验证金额
- 正则验证 (输入时、输入完毕时验证皆可)
let reg = /(^[1-9][0-9]{0,8}([.][0-9]{0,2})?$)|(^0?(\.[0-9]{0,2})?$)/
//输入金额不正确,最低精确到分,最高不能超过亿!
- 提交金额时(将 .8 / 1234. 形式转化为数字形式)
if(money == '.') money = 0;
let realNumber = Number(money)
将.8改为0.8 , 将123.改为123
可再单独判断输入.,将其默认为0;如有错误,请告之
2、手机号验证
let phoneReg = /^[1]([3-9])[0-9]{9}$/
3、营业执照验证
let reg = /(^(?:(?![IOZSV])[\dA-Z]){2}\d{6}(?:(?![IOZSV])[\dA-Z]){10}$)|(^\d{15}$)/
4、字符串是否为数字的验证
function isNumber(val) {
var regPos = /^\d+(\.\d+)?$/; //非负浮点数
var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数
if(regPos.test(val) || regNeg.test(val)) {
return true;
} else {
return false;
}
}
5、JS验证是否为URL
function isUrl(str) {
var v = new RegExp('^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$', 'i');
return v.test(str);
}
6、密码的验证
- 8-16个字符,只能包含字母、数字及特殊字符,至少包含两种
var reg = /^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$).{8,16}$/;
- 至少12位,必须包含大写字母、小写字母、数字、特殊字符
var reg = /^(?=.{12})(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)(?=.*?[*?!&¥$%^#,./@";:><\[\]}{\-=+_\\|》《。,、?’‘“”~ `]).*$/;
(?=.{12}) 表示要大等于12位。
(?=.?[a-z])表示要有小写字母。
(?=.?[A-Z])表示要有大写字母。
(?=.?\d)表示要有数字。
(?=.?[*?!&¥$%^#,./@";:><[]}{-=+_\|》《。,、?’‘“”~> ])`表示要有特殊字符。
获取url中的参数
const getQuery = (url) => {
// str为?之后的参数部分字符串
const str = url.substr(url.indexOf('?') + 1)
// arr每个元素都是完整的参数键值
const arr = str.split('&')
// result为存储参数键值的集合
const result = {}
for (let i = 0; i < arr.length; i++) {
// item的两个元素分别为参数名和参数值
const item = arr[i].split('=')
result[item[0]] = item[1]
}
return result
}
String常用方法
1、String.prototype.replace(),使用特殊变量名作为第二个参数
String.prototype.replace(reg,str)
参数str:可以是下面的特殊变量名:
replace方法的参考链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/replace
let str = '[object Number]';
//$1表示前边正则中第一个括号内匹配的内容
//这里的意思是用前边正则中第一个括号内匹配的内容,替换整个内容
let typeStr = str.replace(/^\[object (\S+)\]$/, '$1'); // "Number"