javaScript-正则表达式

1.1 基本概念

正则表达式( Regular Expression )是用于匹配字符串中字符组合的模式。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。

基本规则

符号作用
[a-z]中括号表示1个字符,- 表示一个范围。所有的小写字母
[xyz]x或y或z中任何一个字符
[^xyz]如果用在中括号中,表示取反。除了xyz之外的所有字符
\ddigital 表示1个数字
\w表示1个单词字符,相当于:[a-zA-Z0-9_]
.通配符表示任意字符,如果只匹配点号。要转义 \.
()用于分组
{n}表示前面的字符出现n次
{n,}表示前面的字符出现大于等于n次 >=n
{n,m}表示前面的字符出现大于等于n,小于等于m
+表示前面的字符出现1~n次
*****表示前面的字符出现0~n次
?表示前面的字符出现0~1次
|表示或者,几个或几组字符中出现1个
^用于正则表达式开头,表示匹配开始
$用于正则表达式结尾,表示匹配结束

1.2 正则基本特点

  1. 灵活性、逻辑性和功能性非常的强。
  2. 可以迅速地用极简单的方式达到字符串的复杂控制。
  3. 在JS中默认是模糊匹配,只要包含正则表达式就可以。如果要精确匹配,前面应该加上^,后面加上$。
正则表达式匹配字符串
\d{3}包含3个数字即可: a123b
^\d{3}以3个数字开头: 123b
\d{3}$以3个数字结尾:a123
ab{2}a后面出现2次b : abb
ab{2,}a 后面出现2次及以上的b: abb 或者abbb 或者 abbbb
ab{3,5}a 后面出现3~5 次的b: abbb或者abbbb 或者 abbbbb
ab+a后面出现1~n次b : ab 或者 abb 或者abbb
ab*a后面出现0~n次b : ab 或者 abb 或者abbb
ab?a 后面出现 0~1次b: a 或者ab
hi|hello字符串里面有hi 或者hello
(b|cd)ef表示bef或者cdef
^.{3}$表示有任意三个字符的字符串
[^a-zA-Z]中括号内部的^,表示不出现,既不出现: 大小写字母

1.3 js中的使用

在 JavaScript 中,可以通过两种方式创建一个正则表达式。

方式一:通过调用RegExp对象的构造函数创建

var regexp = new RegExp(/123/);
console.log(regexp);

方式二:利用字面量创建 正则表达式

 var rg = /123/;

测试正则表达式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试正则表达式</title>
</head>
<body>
    <script>
        // 1. 利用 RegExp对象来创建 正则表达式
        let regexp = new RegExp(/123/);
        console.log(regexp);

        // 2. 利用字面量创建 正则表达式
        let rg = /123/;
        // 3.test 方法用来检测字符串是否符合正则表达式要求的规范
        console.log(rg.test(123));
        console.log(rg.test('abc'));
    </script>
</body>
</html>

执行结果

1.4 表达式操作

正则表达式匹配

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>正则表达式匹配</title>
</head>
<body>
<script type="text/javascript">
  // 定义字符串
  let str = "123abc456";
  // 指定匹配的规则
  let reg = new RegExp("A", "i");
  let res = reg.test(str);
  // 输出结果
  console.log(res); // true
</script>
</body>
</html>

提取字符串

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>提取字符串</title>
</head>
<body>
<script type="text/javascript">
  // 1.定义字符串
  let str = "abc2020-1-11def2019-11-11fdjsklf";
  // 2.默认情况下在正则表达式中一旦匹配就会停止查找 /g表示查到最后
  let reg = /\d{4}-\d{1,2}-\d{1,2}/g
  let res = str.match(reg);
  // 输出结果
  console.log(res);
  console.log(res[0]);
  console.log(res[1]);
</script>
</body>
</html>

执行结果

替换字符串

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>替换字符串</title>
</head>
<body>
<script type="text/javascript">
  // 定义字符串str
  let str = "abc2020-1-11def2019-11-11fdjsklf";
  let reg = /\d{4}-\d{1,2}-\d{1,2}/g
  let newStr = str.replace(reg, "guardwhy");
  // 输出结果
  console.log(str);
  console.log(newStr);
</script>
</body>
</html>

执行结果

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值