JavaScript 正則表達式 總結

正則表達式!!!!

var myregex = new ReExp("[0-9]");    //實例創建方式
var myregex = /[0-9]/g;    // 字面量創建方式
str.search() 方法
var str = "Visit Runoob!"; 
var n = str.search(/Runoob/i);    //  不區分大小寫, 輸出  6 
str.replace() 方法
replace() 方法使用正則表達式
var str = document.getElementById("demo").innerHTML; 
var txt = str.replace(/microsoft/i,"Runoob");   //  Visit Runoob!

replace() 方法使用字符串
var txt = str.replace("Microsoft","Runoob");
str.match(reg) 如果匹配成功,就返回匹配成功的數組,如果匹配不成功,就返回null
var str = 'abc123cba456aaa789';
var reg = /\d+/;
console.log(str.match(reg));  //["123", index: 3, input: "abc123cba456aaa789"]

var reg = /\d+/g;
console.log(str.match(reg));  // ["123", "456", "789"]

reg.test(str) 用來驗證字符串是否符合正則 符合返回true 否則返回false

var patt = /e/;
patt.test("The best things in life are free!");  // true

/e/.test("The best things in life are free!")   // true

reg.exec() 用來捕獲符合規則的字符串

var str = 'abc123cba456aaa789';
var reg = /\d+/;
console.log(reg.exec(str))
//  ["123", index: 3, input: "abc123cba456aaa789"];
0:"123" 表示我們捕獲到的字符串
index:3 表示捕獲開始位置的索引
input 表示原有的字符串
----------------------------------------------------
沒有加'g'標識符,則exec結果爲同一個,當有'g'標識符時 捕獲的結果不一樣

正則語法

元字符

\d	匹配數字,相當於[0-9]
\D	匹配非數字,相當於[^0-9]
\w	匹配字母或數字或漢字或下劃線
\W	匹配任意不是字母、數字、漢字或下劃線的字符
\s	匹配任意的空白符,如空格、換行符、製表符等
\S	匹配任意不是空白符的字符
.(點號)	匹配除了換行符以外的任意字符
[...]	匹配方括號中的所有字符
[^...]	匹配非方括號中的所有字符

限定符

+	重複1次或更多次
*	重複0次或更多次(任意次數)
?	重複0次或1次(最多1次)
{n}	重複n次
{n,}	重複n次或更多次(最少n次)
{n,m}	重複n到m次

修飾符

i	執行對大小寫不敏感的匹配。
g	執行全局匹配(查找所有匹配而非在找到第一個匹配後停止)。
m	執行多行匹配。

例子

給一個連字符串例如:get-element-by-id轉化成駝峯形式

var str = "get-element-by-id";
var reg = /-\w/g; // 匹配橫杆以及之後的一個字符,全局匹配
console.log(str.replace(reg,function($0){
    return $0.slice(1).toUpperCase();
    // 匹配到到是-e -b -i 形式截取後一個字符轉成大寫 
}));

分割數字每三個以一個逗號劃分

var str = "12345678901";
function numSplit(str){
    var re = /(\d)(?=(\d{3})+$)/g;
    //(\d{3})+$ 的意思是連續匹配 3 個數字,且最後一次匹配以 3 個數字結尾。
    //要找到所有的單個字符,這些字符的後面跟隨的字符的個數必須是3的倍數,並在符合條件的單個字符後面添加,
    return str.replace(re,'$1,');
}
console.log(numSplit(str));

驗證郵箱

function isEmail(email) {
    var regx = /^([a-zA-Z0-9_\-])+@([a-zA-Z0-9_\-])+(\.[a-zA-Z0-9_\-])+$/;
    return regx.test(email);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章