JavaScript正则表达式

本文探讨了正则表达式的应用,包括表单验证、文本替换与提取,以及如何使用字面量和构造函数创建及定制。重点介绍了修饰符、方法(test()和exec())和字符量,展示了如何通过replace(), match(), search(), 和 split() 进行字符串操作。
摘要由CSDN通过智能技术生成

引用数据类型,正则表达式也是对象

1.作用

  • 表单的验证
  • 替换,替换某些敏感词汇
  • 提取,提取某段想要的字符串

2.创建正则表达式

1)使用字面量来创建正则表达式

语法:var 变量=/正则表达式/匹配模式

使用字面量的方式创建更加简单      

var reg=/a/i;

2)构造函数创建正则表达式的对象

语法:var 变量=new RegExp('正则表达式','匹配模式');

使用构造函数创建更加灵活

var reg=new RegExp('a','i');

3.修饰符(匹配模式)

在构造函数中可以传递一个匹配模式作为第二个参数

g            global                全局匹配
i             ignore case       不区分大小写
m           multiline            多行

4.正则表达式的方法

1)test()      使用这个方法可以用来检查一个字符串是否符合正则表达式的规则。如果符合则返回true,否则返回false

var result = pattern.test(str);
参数:字符串
 返回值:布尔类型  true代表有符合条件的,false代表没有符合条件的

var reg=new RegExp('a','i');

console.log(reg.test('a'));       //true
console.log(reg.test('bAbc'));    //true
console.log(reg.test('b'));       //false

2)exec()      检索字符串中的正则表达式的匹配

var result = pattern.exec(str)
参数:字符串
返回值:数组或者null
数组:匹配到的结果
如果正则表达式中有修饰符“g”,这时,在pattern中会维护lastIndex属性,记录下一次开始的位置,当第二次执行exec的时候,从lastIndex开始检索。
如果正则表达式中没有修饰符“g”,不会维护lastIndex属性,每次执行从开始位置检索

5.字符量

1)字符类

.     (点号,小数点) 匹配任意单个字符,但是行结束符除外
\d     匹配任意阿拉伯数字。等价于[0-9]
\D     匹配任意一个不是阿拉伯数字的字符。等价于[^0-9]。
\w     匹配任意来自基本拉丁字母表中的字母数字字符,还包括下划线。等价于 [A-Za-z0-9_]。
\W    匹配任意不是基本拉丁字母表中单词(字母数字下划线)字符的字符。等价于 [^A-Za-z0-9_]。

\s     匹配一个空白符,包括空格、制表符、换页符、换行符和其他 Unicode 空格。
\S     匹配一个非空白符。
\t     匹配一个水平制表符(tab)
\r     匹配一个回车符(carriage return)
\n     匹配一个换行符(linefeed)
\v     匹配一个垂直制表符(vertical tab)
\f     匹配一个换页符(form-feed)

2)字符集合

[xyz]     一个字符集合,也叫字符组。匹配集合中的任意一个字符。你可以使用连字符‘-’指定一个范围。[0-9]   [a-z]
[^xyz] 一个反义或补充字符集,也叫反义字符组。也就是说,它匹配任意不在括号内的字符。你也可以通过使用连字符 '-' 指定一个范围内的字符。

3) 边界

^    匹配输入开始。如果多行(multiline)标志被设为 true,该字符也会匹配一个断行(line break)符后的开始处。
$     匹配输入结尾。如果多行(multiline)标志被设为 true,该字符也会匹配一个断行(line break)符的前的结尾处。
\b  匹配一个零宽单词边界(zero-width word boundary),如一个字母与一个空格之间。
\B     匹配一个零宽非单词边界(zero-width non-word boundary),如两个字母之间或两个空格之间。

4)数量词

x*               匹配前面的模式 x 0 或多次。
x+               匹配前面的模式 x 1 或多次。等价于 {1,}。
x?               匹配前面的模式 x 0 或 1 次。
x{n}             n 是一个正整数。前面的模式 x 连续出现 n 次时匹配
x{n,}            n 是一个正整数。前面的模式 x 连续出现至少 n 次时匹配。
x{n,m}         n 和 m 为正整数。前面的模式 x 连续出现至少 n 次,至多 m 次时匹配。
x*?              像上面的 * 一样匹配前面的模式 x,然而匹配是最小可能匹配。
x+?             像上面的 + 一样匹配前面的模式 x,然而匹配是最小可能匹配。
x|y               匹配 x 或 y

6. 字符串和正则相关的方法

 1)replace()        可以将字符串中指定内容替换为新的内容

参数:1.被替换的内容,可以接受一个正则表达式作为参数

           2.新的内容

默认只会替换第一个

我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容

可以为一个正则表达式设置多个匹配模式,且顺序无所谓

var str='1a2a3a4d5a6f7A8B9C';
var result=str.replace(/[a-z]/gi,' ');
console.log(result);
//打印出1 2 3 4 5 6 7 8 9 

 2)match()        会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果

可以根据正则表达式,从一个字符串中将符合条件的内容提取出来

默认情况下我们的match只会找到第一个符合要求的内容,找到以后就会停止检索

我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容

可以为一个正则表达式设置多个匹配模式,且顺序无所谓

var str='1a2a3a4d5a6f7A8B9C';
var result=str.match(/[a-z]/gi);
console.log(result);        //打印 [ "a", "a", "a", "d", "a", "f", "A", "B", "C" ]
console.log(result[0]);     //打印 a

3)search()        只会查找第一个,即使设置全局匹配也没用

可以搜索字符串中是否含有指定内容

如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到返回-1

它可以接受一个正则表达式作为参数,然后根据正则表达式去检索字符串

var str='hello abc hello aec afc';
var result=str.search(/a[bef]c/);
console.log(result);
//打印出第一次出现的索引6

4)split()        可以将一个字符串拆分为一个数组

方法中可以传递一个正则表达式作为参数,这样方法将会根据正则表达式去拆分字符串

这个方法即使不指定全局匹配,也会全都拆分

var str='1a2b3c4d5e6f7';
var result=str.split(/[A-z]/);
console.log(result);
//打印出[ "1", "2", "3", "4", "5", "6", "7" ]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值