日常开发中使用频率高的正则

这是 正则表达式在线生成工具 的链接
还有更多正则表达式:正则表达式之数字验证
        最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等_JQ棣的博客-CSDN博客

正则的组合解析

?=.*              // 至少包含一个
(?=.*[A-Z])       // 至少包含一个 大写字母
    // 仅支持字母和数字,至少包括一个大写字母、一个数字,且长度在 3 到 6 位之间
    const reg = /^(?=.*[A-Z])(?=.*[0-9])[0-9a-zA-Z]{3,6}$/; 

\W                // 非字母数字下划线,即特殊符号,即 [^A-Za-z0-9_]

0、判断所有特殊字符

// 匹配中文 和 键盘上所有的 非 特殊字符 (亲测可用)
var reg = /^[\u4e00-\u9fa5_a-zA-Z0-9]+$/;
reg.test(a); // 如果 a 是键盘上任何一个特殊字符,结果就是 false


// 英文状态下所有的特殊字符(即:半角)
var reg = /^[`~!@#\$%\^&\*\(\)_\+\{\}\[\]\\\|;:'",<\.>\?\/\-=]+$/;

// 需要加转译 \ 的有:
// $ ^ * ( ) [ ] { } \ | / . ? - +

1、判断价格必须为数字,可包括小数点:

var patrn = /^(([1-9][0-9]*\.[0-9][0-9]*)|([0]\.[0-9][0-9]*)|([1-9][0-9]*)|([0]{1}))$/g;
console.log(patrn.test(val))

2、验证整数、浮点数及其正负:

// 验证 数字,不论是否为负数,不论是否外面加了引号
    // 先 绝对值,再 判断
var str = "123.456";
var s = Math.abs(str);
var reg= /^[0-9]+.?[0-9]*$/;
console.log(reg.test(s));

// 验证 整数
var str = "123456";
var reg= /-?[1-9]\d*/;
console.log(reg.test(str));

// 验证 数字
var str = "123456";
var reg = /^(([1-9][0-9]*\.[0-9][0-9]*)|([0]\.[0-9][0-9]*)|([1-9][0-9]*)|([0]{1}))$/g;
console.log(reg.test(str));

// 验证 正整数
    // 包含 0 的正整数
var str = "123456";
var reg= /^[0-9]+$/g;
var reg=/^([1-9]\d*|[0]{1,1})$/; // 两个都可用
console.log(reg.test(str));
    // 不包含 0 的正整数
var str = "123456";
var reg= /^([1-9][0-9]*){1,3}$/g;    // 两个都可用
// var reg= /^\+?[1-9][0-9]*$/g;    // 两个都可用
console.log(reg.test(str));


// 验证 负整数
var str = "123456";
var reg= /-[1-9]\d*/;
console.log(reg.test(str));


// 验证 正浮点数
var str = "123456";
var reg= /[1-9]\d*.\d*|0.\d*[1-9]\d*/;
console.log(reg.test(str));


// 验证 负浮点数
var str = "123456";
var reg= /-([1-9]\d*.\d*|0.\d*[1-9]\d*)/;
console.log(reg.test(str));

    除以上正则:
    Math.sign(val),也可判断正负。返回值为 1 时为正,为 -1 时为负。
    Number.isInteger() =>判断一个值是否为整数

3、验证 xxxx-xxxxxxxx(前四后八)和 xxx-xxxxxxxx(前三后八):

var phone = '023-55556666';
var result = /^\d{3,4}-\d{6,8}$/.test(phone);
console.log(result);

4、验证身份证号码:

var a = '222222333366669999';
var reg = /^\d{17}[\d|x]|\d{15}$/g;
console.log(reg.test(a));

5、验证 QQ 号:

var a = '1258456253';
var reg = /^[1-9]([0-9]{5,11})$/g;
console.log(reg.test(a));

6、验证日期格式:

var a = '2018-09-11';
var reg = /^\d{4}(\-|\/|.)\d{1,2}\1\d{1,2}$/g;
console.log(reg.test(a));


// 这个正则基本上把闰年和2月等的情况都考虑进去了 (但闰年 2 月似乎仍有问题,有待更新)
var a = '2020-02-29';
var reg = /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$/g;
console.log(reg.test(a));

7、验证邮箱格式:

var a = 'tbywtb@163.com';
var reg = /^\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}$/g;
console.log(reg.test(a));

8、验证网址:

var a = 'http://tools.jb51.net/regex/create_reg';
var reg = /^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+$/g;
console.log(reg.test(a));

9、验证国内手机号:

var a = '13155556666';
var reg = /^0?(13|14|15|17|18|19)[0-9]{9}$/g;
console.log(reg.test(a));

10、验证国内电话号:

var a = '0235-56259656';
var reg = /^[0-9-()()]{7,18}$/g;
console.log(reg.test(a));

11、替换各种括号及括号中的内容

// 替换 括号 及 其中的内容
let str = "应雪丽-E666男123456[我的]78(000)9123[你的]456(1389090)789";
let regex1 = /\((.+?)\)/g,                // () 小括号
  regex2 = /\[(.+?)\]/g,                  // [] 中括号
  regex3 = /\{(.+?)\}/g;                  // {} 花括号,大括号
console.log(str.replace(regex1, '--').replace(regex2, '**').replace(regex3, '%%'))
// 应雪丽-E666男123456**78(000)9123**456--789

// 只替换括号
let regex0 = /\[|\]|\(|\)|(|)|\{|\}/g;
console.log(str.replace(regex0, '--'))
// 应雪丽-E666男123456--我的--78--000--9123--你的--456--1389090--789

12、匹配到不包括制定字符的所有汉子:

var regex = /((?!男|女)[\u4e00-\u9fa5])\s+((?!男|女)[\u4e00-\u9fa5])/g;   
// 匹配到中间有空格的名字,但不能匹配到‘男’‘女’,如:女,张 杰

13、密码必须包含数字和字母且不少于6位不多于16位
 

var reg = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,16}$/;

14、转换字符串为千分位

function format(number){
    //var reg = /(\d{1,3})(?=(\d{3})+(\.(\d)*$))/g;    
    var reg =/(\d{1,3})(?=((\d{3}))+(\.\d*)?$)/g;//这个更棒
    return (number.toFixed(2) +'').replace(reg,'$&,');
}
console.log(format(12345678.123));//=>12,345,678.12

15、验证姓名、只包括汉字、2到7位

var reg=/^([\u4e00-\u9fa5]){2,7}$/;
reg.test('王一');

16、不可为空字符串或特殊字符

var reg = /[\s\$\(\)\@\#\%\^\&\*\~\/\|\\,.;'"?!\[\],。;‘’“”?!【】、\{\}]+/;

17、校验日文的正则

var reg = /[\u3000-\u303F]|[\u3040-\u309F]|[\u30A0-\u30FF]|[\uFF00-\uFFEF]|[\u4E00-\u9FAF]|[\u2605-\u2606]|[\u2190-\u2195]|\u203B/g;
reg.test("翻訳デスクトップ端");

暂未整理:

验证数字:^[0-9]*$
验证n位的数字:^\d{n}$
验证至少n位数字:^\d{n,}$
验证m-n位的数字:^\d{m,n}$
验证零和非零开头的数字:^(0|[1-9][0-9]*)$
验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
验证非零的正整数:^\+?[1-9][0-9]*$
验证非零的负整数:^\-[1-9][0-9]*$
验证非负整数(正整数 + 0) ^\d+$
验证非正整数(负整数 + 0) ^((-\d+)|(0+))$
验证长度为3的字符:^.{3}$
验证由26个英文字母组成的字符串:^[A-Za-z]+$
验证由26个大写英文字母组成的字符串:^[A-Z]+$
验证由26个小写英文字母组成的字符串:^[a-z]+$
验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
验证由数字、26个英文字母或者下划线组成的字符串:^\w+$
验证用户密码:^[a-zA-Z]\w{5,17}$ 正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。
验证是否含有 ^%&',;=?$\" 等字符:[^%&',;=?$\x22]+
验证汉字:^[\u4e00-\u9fa5],{0,}$
验证Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
验证InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
验证电话号码:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:--正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。
验证身份证号(15位或18位数字):^\d{15}|\d{}18$
验证一年的12个月:^(0?[1-9]|1[0-2])$ 正确格式为:“01”-“09”和“1”“12”
验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$ 正确格式为:01、09和1、31。
整数:^-?\d+$
非负浮点数(正浮点数 + 0):^\d+(\.\d+)?$
正浮点数 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
非正浮点数(负浮点数 + 0) ^((-\d+(\.\d+)?)|(0+(\.0+)?))$
负浮点数 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮点数 ^(-?\d+)(\.\d+)?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值