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