飞道的博客

javaScript-正则表达式

444人阅读  评论(0)

1.1 基本概念

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

基本规则

符号 作用
[a-z] 中括号表示1个字符,- 表示一个范围。所有的小写字母
[xyz] x或y或z中任何一个字符
[^xyz] 如果用在中括号中,表示取反。除了xyz之外的所有字符
\d digital 表示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>

执行结果


转载:https://blog.csdn.net/hxy1625309592/article/details/116034607
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场