Skip to content

前端正则验证

获取url传递参数

js
function getQueryString(name) {
    var reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`, "i");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) return unescape(r[2]);
    return null;
}

function getQueryStringByName(name) {
    var href = decodeURI(window.location.href); // 转义
    var r = href.match(new RegExp(`[\?\&]${name}=([^\&]+)`, "i"));
    if (r == null || r.length < 1) {
        return "";
    }
    return r[1];
}

密码验证

数字、字母、特殊字符(除空格),两个以上组合

匹配组合

  • 数字+字母
  • 数字+特殊字符
  • 字母+特殊字符
  • 数字+字母+特殊字符组合
  • 不能是纯数字,纯字母,纯特殊字符
js
const regexp = /^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$).{6,20}$/;

创建 RegExp 对象: /pattern/attributes new RegExp(pattern, attributes)

?!n:匹配任何其后没有紧接指定字符串 n 的字符串。

\d:查找数字。

n+:匹配任何包含至少一个 n 的字符串。

[abc]:查找方括号之间的任何字符。

[^abc]:查找任何不在方括号之间的字符。

.:查找单个字符,除了换行和行结束符。

n{X,Y}:匹配包含 X 至 Y 个 n 的序列的字符串。

限定特殊字符,例如,特殊字符的范围为 !#$%^&*,修改为

js
const regexp = /^(?![\d]+$)(?![a-zA-Z]+$)(?![!#$%^&*]+$)[\da-zA-Z!#$%^&*]{6,20}$/;

ZhiHu


邮箱验证

邮箱@前缀的几种类型:

类型例子
纯数字123456@qq.com
纯字母abcd@qq.com
字母数字混合abcd1234@qq.com
带点的abc.def@qq.com
带下划线abc_def@qq.com
带连接线abc-def@qq.com

邮箱@后缀的类型:

  • 至少有两处单词

  • 顶级域名一般为2~4位(如cn、com、club)

例子
123456@qq.com
123456@vip.qq.com
js
const regexp = /^[\w.]+@[\w]+(\.[a-zA-Z]{2,3}){1,2}$/;