vim实现正则表达式 查询字符串手机号及网址

1.进行查询手机号的正则表达式
(1)exec()

//设置正则表达式的查询字符串
var str=“my phone is 13223543637 ,his phone is 18536901758 ,her phone is 13456744321;
//设置正则表达式 正则表达式用//包裹,内容为以1开头 3578中的任意数字为第二个数字,\d/表示数字,{9}表示数字出现9次 
var pattern=/1[3|5|7|8]\d{9}/g;
//查询用exec函数输出
console.log(pattern.exec(str);
//输出查询到的最后一个索引
console.log(pattern.lastIndex);

测试结果为:
结果-1在这里插入图片描述图为查询三次并返回pattern。

exec():作用:查询字符串中是否有符合正则表达式的值
返回值:数组 第一个数组值为查询到的字符串,第二个数组值为查询到的字符串所在的索引值,input为查询的字符串, group表示分组。

(2)test()
在这里插入图片描述测试结果:
在这里插入图片描述
test()函数,不能直接全部输出,调用一次函数输出查询的一个结果,设置全局搜索g,维护一个lastIndex属性,每次记录上次查询到的索引值,下次查询的时候,从上次记录的索引值开始查询。
test()的作用是查询是否由符合正则表达式的值, 有则返回true,没有则返回false。
当查询到无的时候,则返回开头重新查询。
补充:正则表达式相关知识:

  1. 实例化

    1. 字面量
      var pattern = /正则表达式/匹配模式
      var pattern = /\d{3}/g
    2. 构造函数
      var pattern = new RegExp(正则表达式,匹配模式);
      匹配模式(标志)
      i ignoreCase 忽略大小写
      g global 全局匹配,每次记录下一次开始的位置。
      m multiline 多行匹配
      u unicode 使用 “u” 标志,任何 Unicode 代码点的转义都会被解释。
      y sticky 属性反映了搜索是否具有粘性
  2. API
    静态方法:

    实例方法:
    RegExp.prototype.exec() 执行检索
    如果标志中有g,表示全局匹配,如果全局匹配,当前正则表达式对象会维护一个lastIndex的属性,表示下一次开始检索的位置。
    参数:字符串
    返回值:
    数组, 数组中的元素为检索到的值,数组中属性index表示当前检索到的值在字符串中位置;input表示字符串;groups表示分组

    RegExp.prototype.test() 测试目标字符串是否匹配模式
    如果标志中有g,表示全局匹配,如果全局匹配,当前正则表达式对象会维护一个lastIndex的属性,表示下一次开始检索的位置。
    参数:字符串
    返回值:
    boolean,当为true表示目标串中包含模式匹配的内容

    实例属性:
    RegExp.prototype.flags 获取正则表达式中的标志 igm
    RegExp.prototype.source 获取正则表达式的字符串描述

    RegExp.prototype.global 是否进行全局匹配
    RegExp.prototype.ignoreCase 是否进行忽略大小写匹配
    RegExp.prototype.multiline 是否进行多行匹配
    RegExp.prototype.sticky 匹配是否粘性
    RegExp.prototype.unicode 匹配是否识别unicode

  3. 专业理论

    1. 直接量
      字符 /abc/ 匹配字符串"abc"
      数字 /123/ 匹配数组123
    2. 字符类
      [abc] /[abc]/ 匹配"abc"中任意一个字符
      [^abc] /[^abc]/ 匹配非"abc"中任意一个字符
      . 任意字符(除了换行符)
      \w 任意字符 [a-zA-Z0-9]
      \W 任意非字符 [^a-zA-Z0-9]
      \s 任意空白符
      \S 任意非空白符
      \d 任意数字 [0-9]
      \D 任意非数字 [^0-9]
    3. 数量词
      数量词应该应用到正则表达式的子表达式后
      /\w{3}/ 任意3个字符

    {3} 3次
    {1,3} 1~3次
    {1,} 1到多次
    “+” 1到多次
    ? 0到一次
    “*” 0到多次

    默认是贪婪匹配, 比如当数量词设置为{3,9},正则会尽可能多的进行匹配。如果希望非贪婪匹配,需要在数量词后添加? , 例如{3,9}?

    1. 选择
      通过"|"分割
      /ab|cd|ef/

    2. 分组
      通过"()"分组

    3. 引用
      \1 引用第一分组的结果,例如12abc12

    4. 多行匹配 flags包含 m
      匹配的时候可以识别换行
      匹配一行开始 ^
      匹配一行结束 $

2.进行查询字符串中网址的正则表达式
代码如下:
在这里插入图片描述使用exec()查询字符串中的网址,通过分组将两个不同的网址构造进行多项分割, 然后进行选择函数,进行查找。
注意:网址中的;/ /要用: / /进行转义。
测试结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46816740/article/details/108103716