小熊奶糖(BearCandy)
小熊奶糖(BearCandy)
发布于 2024-02-26 / 19 阅读
0
0

JavaScript 正则表达式

JavaScript 正则表达式

规则表达式(regular expression)

简写:regex,regexp或者RE

  1. 是一个对象,叫正则对象
  2. 是一个强大的字符串匹配和处理工具(除了处理字符串,其他的什么都做不了)
  3. 它是火星文,一般人很难理解(程序界的摩斯码)
  4. 它还是一种思维方式
  5. 容易学,但是也非常容易忘记

使用场景

1、比如网站要求你输入的QQ号为5~12位数字
2、电话号码必须是010-12345678或0731-88032131这样的字符串
3、比如Email邮箱验证
4、比如过滤关键字或者过滤HTML标签
5、比如发表评论的时候只允许中文评论
6、比如去除字符串首尾空格
---正则是不是必须--- 正则虽然不是必须的,但是用了正则后,会让你的代码更少,效率更高,可读写更好

语法

/正则表达式主体/修饰符

实例

var pattern= /yuegitech/i

/yuegitech/i 是一个正则表达式

yuegitech是正则表达式主体(用于检索)

i是一个修饰符(搜索不区分大小写)

字符串方法

屏幕截图 2024-02-26 150202.png

例子

1.使用正则表达式搜"yuejitech"字符串且不区分大小写

var str ="Visit yuegitech!";
var n =str.search(/yuegitech/i);

2.使用正则表达式且不区分的大小写将字符串中的Microsoft替换为 yuegitech:

var str = document.getElementById("deomo").innerHTML;
var txt = str.replave(/microsoft/i),"yuegitech";

正则表达式修饰符

i ignore - 不区分大小写 将匹配设置为不区分大小写,搜索时不区分大小写: A 和 a 没有区别。
g global - 全局匹配 查找所有的匹配项。
m multi line - 多行匹配 使边界字符**^** 和**$** 匹配每一行的开头和结尾,记住是多行,而不是整个字符串的开头和结尾。
s 特殊字符圆点**.** 中包含换行符**\n** 默认情况下的圆点**.** 是匹配除换行符**\n** 之外的任何字符,加上 s 修饰符之后, . 中包含换行符 \n。

模式

表达式

表达式 描述
[abc] 查找方括号之间的任何字符
[0-9] 查找任何从0至9的数字
(x| y ) 查找任何以|分隔的选项

元字符

元字符 描述
\d 查找数字
\s 查找空白字符
\uxxxx 查找以十六进制数xxx规定的Unicode字符
\b 匹配单词边界

量词

量词 描述
n+ 匹配任何包含至少一个n的字符串
n* 匹配任何包含零个或多个n的字符串
n? 匹配任何包含零个或一个n的字符串

RegExp 对象JavaScript RegExp 对象 | 菜鸟教程 (runoob.com)

test()

test()方法是一个正则表达式方法。可用于邮箱格式验证等。

test()方法用于监测一个字符串是否配备某个模式,如果字符中含有匹配的文本,则返回true,否则返回false.

以下用于搜索字符串中的字符“e”

实例

var patt= /e/;
patt.test("The best things in life are free!");

exec()

exec()是一个正则表达式方法。

exec()方法用于检索字符串中的正则表达式的匹配

该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值null。

以下示例用于搜索字符串中的字母“e”

实例

/e/.exec("The best things in life are free!");

代码演示

<!DOCTYPE html>
<html>
<head>
    <title>正则表达式</title>
    <meta charset="UTf-8">
</head>
<body>
    <h1>正则表达式</h1>
    <p id ="demo"> visit Microsoft</p>
    <button onclick="wocao();">点我替换</button>
    <script>
       //正则表达式search方法
       var str = "Vist nbenter.top";
       //调用search方法 不区分大小写 看nbenter在第几位开始不算空格
       var e = str.search(/nbenter/i);//正则表达式方式
       var d = str.search("top");//字符串方式
       document.write(`${e}\n`);
       document.write(`\n${d}\n`);
      //创建wocao方法
       function wocao(){
        //读取id为demo标签内的内容
        var str =document.getElementById("demo").innerHTML;
           //replace方法
        var txt = str.replace(/microsoft/i,"nbenter.top");
        document.getElementById("demo").innerHTML =txt;
       };
       //RE对象的test()方法
       var patt = /e/;
       //检测desfdsfdsfdff是否有e
       document.write(patt.test("desfdsfdsfdff")); //返回false
       //检查输入的内容是否符合指定的内容要求,要求字母a-z;数字0-9;_
       var patt1 = /^\w+$/;
    //    正则表达式 var patt1 = /^\w+$/; 
//定义了一个 JavaScript 中的正则表达式对象(Pattern),这个表达式的含义是:
// ^:表示匹配输入字符串的开始位置。
// \w:在正则表达式中,\w 是一个预定义字符类,它代表任意单个字母、数字或下划线(等价于 [A-Za-z0-9_])。
// +:表示前面的 \w 应当出现一次或多次。也就是说,它匹配的是一个或多个连续的字母、数字或下划线组成的字符串。
// $:表示匹配输入字符串的结束位置。
// 综上所述,整个表达式 ^\w+$ 的意思就是:匹配由一个或多个字母、数字或下划线组成,
// 并且这些字符构成了整个字符串,即字符串不能包含其他任何字符(比如空格、标点符号等)。
// 这个正则表达式通常用于验证是否为有效的“单词”(没有空格或其他非字母数字下划线字符)、
// ID、用户名等场景,其中不区分大小写的情况需要额外加上标志 i,即 /^\w+$/i。但在这个例子中,由于没有添加 i 标志,所以它是区分大小写的。
       document.write(patt1.test("fadsjkfnadjks20"));
       //判定输入内容为字母
       var patt2 = /^[a-zA-Z]+$/;
       document.write(patt2.test("fadsjkfnadAjks"));
    </script>
</body>
</html>

评论