正则表达式:用于定义一些字符串的规则
一、创建正则表达式的两种方式:
// 1.var 变量 = new RegExp("正则表达式","匹配模式")
var str = "Hello RegExp";
var reg = new RegExp("hello","i");//检查一个字符串是否含有a
console.log(reg.test(str));//true
// 2.var 变量 = /正则表达式/匹配模式
var reg1 = /Hello/i;
console.log(reg1.test(str));//true
// test():用来检查一个字符串是否符合正则表达式的规则
// 匹配模式有两种: i 忽略大小写
// g 全局匹配模式
// ps:使用字面量的方式创建更加简单,使用构造函数创建更加灵活;
二、正则表达式语法
| | 或者 |
[n] | 或者 |
[^ n] | 除了 |
// 使用|表示或者
var reg = /a|b/i;
console.log(reg.test("abbb"));//true
// 使用[]也可表或者
reg = /[ab]/;
console.log(reg.test("bc"));//true
console.log(reg.test("ac"));//true
// [A-Z]任意大写字母 [a-z]任意小写字母 [A-z]任意字母 [0-9]任意数字
reg = /[a-z]/;
console.log(reg.test("abb"));//true
// [^ ]表除了[]里的都返回true
reg = /[^0-9]/;
console.log(reg.test(398423));//false
console.log(reg.test("sd12"));//true
三、字符串和正则相关的方法
1.split():将一个字符串拆分为一个数组(默认全局匹配)
var str = "DxHaJvSvfHwFshsUdfr";
var result = str.split(/[a-z]/);
console.log(result);//['D', 'H', 'J', 'S', '', 'H', 'F', '', '', 'U', '', '', '']
console.log(str);//DxHaJvSvfHwFshsUdfr
// 该方法不改变原字符串;结果以数组对象类型返回
2.search():搜索字符串中是否含有指定内容(只会查找第一个,无全局匹配)
var str = "Someone or something that is amusing makes you laugh or smile";
var result = str.search(/m[a-z]s/);
console.log(result);//30
// 返回查询到的第一个单词索引
3.match():根据正则表达式,从一个字符串中将符合条件的内容提取出来(会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果)
var str = "Someone or something";
var result = str.match(/[m-z]/g);
console.log(result);//['o', 'm', 'o', 'n', 'o', 'r', 's', 'o', 'm', 't', 'n']
// 默认情况下,match只会找到第一个符合要求的内容,找到以后停止检索
// 设置全局匹配模式,将会匹配到所有内容
4.replace("被替换内容","新的内容"):可以将字符串中指定内容替换为新的内容
var str = "amusing makes you laugh or smile";
var result = str.replace(/[m-z]/g,'');
console.log(result);//aig ake lagh ile
四、量词:通过量词可以设置一个内容出现的次数;量词只对它前边的一个内容起作用
{n} | 正好出现n次 |
{m,n} | 出现m-n次 |
{m,} | m次以上 |
+ | 至少一个,+ == {1,} |
* | 0个或多个,* == {0,} |
? | 0个或一个,? == {0,1} |
^表开头,$表结尾,.表任意字符,\.表.,\\表\
\w \W | 任意字母、数字、_ ([A-z0-9_]) 除了字母、数字、_ ([^A-z0-9_]) |
\d \D | 任意数字([0-9]) 除了数字([^0-9]) |
\s \S | 空格 除了空格 |
\b \B | 单词边界 除了单词边界 |
单词边界:
// 单词边界
var str = "Someone or something";//or两边空格处为单词边界
var reg = /\bor\b/;
var str2 = "Someone orsomething";
console.log(reg.test(str));//true
console.log(reg.test(str2));//false
例子:
// 正则例子:邮件
// 邮件: hello.reg@234.com.cn
// hello.reg :任意字母数字下划线 (\w{4,}(\.\w+)*)
// @
// 234:任意字母数字 ([A-z0-9]+)
// .com.cn 任意字母 ((\.[A-z]{2,5}){1,2})
var emailReg = /^\w{4,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/;
var email = "hello.reg@234.com.cn";
console.log(emailReg.test(email));//true