1. 程式人生 > >正則表達式備忘(基於JavaScript)

正則表達式備忘(基於JavaScript)

console dex 一個數 info 基於 last png con pan

基於JS學習的正則表達式 備忘

技術分享圖片

e.g.
匹配以0開頭的三位或四位區號,以-分格的7或8位電話號碼
var reg1 = /^0\d{2,3}\-\d{7,8}$/;

var reg1 = new RegExp(‘^0\\d{2,3}\\-\\d{7,8}$‘) ;

reg1.test(‘010-1234567‘);
reg1.test(‘010-12345678‘);
reg1.test(‘0531-1234567‘);
reg1.test(‘0531-12345678‘);

第一種寫法更簡潔!


#使用正則表達式分格字符
var str1 = ‘a,b c, d‘;
var result = str1.split(/[\s\,]+/);


console.log(result);

#使用正則表達式提取子串
var reg = /^(\d{3})\-(\d{3,8})$/;
var arr = reg.exec(‘010-123456‘);
reg.exec的返回值:匹配成功時,[0]為匹配到的整個字符串,後面的元素是每個子串;
匹配失敗時返回null;


#正則表達式的貪婪匹配
var reg = /^(\d+)(0*)$/;
reg用來匹配至少一個數字開頭並且以任意個0結尾的字符串;
當用reg.exec(‘123000‘)時,由於貪婪匹配,所以\d+把後面的000也匹配上了,結果0*只能匹配空字符串;
返回[‘123000‘, ‘123000‘, ‘‘]


#正則表達式的 非貪婪匹配


在 \d+ 後加一個?,即為 \d+?, 如下
var reg = /^(\d+?)(0*)$/;
reg.exec(‘123000‘); 返回[‘123000, ‘123‘, ‘000‘]


#正則表達式全局搜索
形式:
var reg = /[a-zA-Z]+Script/g; //指定字母g標誌
var str1 = ‘JavsScript, VBScript, and ECMAScript‘;
reg.exec(str1);
reg.lastIndex;

reg.exec(str1);
reg.lastIndex;

reg.exec(str1);
reg.lastIndex;

字母i標誌意思是忽略大小寫
var reg = /[a-zA-Z]+Script/gi; //指定字母g標誌,i忽略大小寫


var str1 = ‘JavsScript, VBscript, and ECMAscript‘;
可匹配Script和script


#匹配email
var re = /^\w+\.?\w+\@\w+\.[a-zA-Z]{2,}$/;
匹配
var email = ‘[email protected]‘;
var email = ‘[email protected]‘;
var email = ‘[email protected]‘;

re.test(email); => true


#匹配帶名字的email
var re = /^\<(\w+\s*\w+)\>\s*(\w+\.?\w+\@\w+\.[a-zA-Z]{2,})$/;
匹配
var email = ‘<abc def> [email protected]‘; // [<abc def> [email protected], abc def, [email protected]]
var email = ‘<abcdef> [email protected]‘; // [<abc def> [email protected], abcdef, [email protected]]

正則表達式備忘(基於JavaScript)