1. 程式人生 > >日常開發中使用頻率高的正則

日常開發中使用頻率高的正則

這是 正則表示式線上生成工具 的連結
還有更多正則表示式:正則表示式之數字驗證
        https://blog.csdn.net/w13528476101/article/details/78821426

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 = '[email protected]';
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|18)[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));

暫未整理:

驗證數字:^[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+)?