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);
}