美文网首页让前端飞JavaScriptvue
解析JavaScript 正则表达式与字符串查找

解析JavaScript 正则表达式与字符串查找

作者: a333661d6d6e | 来源:发表于2019-02-13 20:56 被阅读26次

今天小编就为大家分享一篇JavaScript 正则表达式与字符串查找方法,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。

首先提出一个问题:

如何取得一个给定的字符串substr在另一个字符串str中出现的次数?

字符串匹配,第一想到的就是正则表达式,但我们最常使用的字面量来创建的正则表达式方式却无法传入变量,
这时应该使用另一种创建正则表达式的方式:构造函数,如下

var reg = new RegExp(substr, "g");

其中第一个参数表示要匹配的字符串模式,因此可以传入变量,不需要加/ /,第二个参数是可选的标志字符串。
可以传入变量了,再介绍个字符串基本包装类型的方法:match()
语法为str.match(regExp),参数为一个正则表达式,若传的不是正则则会隐式转换,返回值为一个包含匹配结果的数组,如果没有匹配项,则返回null。
另外,字符串的match方法与正则的exec()类似,返回匹配的详细信息;字符串的search方法与正则的test()类似,只是用来查看是否匹配。

回到最初的问题,完整的程序如下:

var str1 = "abctestctesqk1test23";
var str2 = "test";
  
function countSubstr(str, substr) {
  var reg = new RegExp(substr, "g");
  return str.match(reg) ? str.match(reg).length : 0;//若match返回不为null,则结果为true,输出match返回的数组(["test","test"])的长度
}
console.log(countSubstr(str1, str2));//输出2

另外,对于变量的问题,不使用构造函数也可以解决,即使用eval():

var reg = "/" + substr + "/g";
reg = eval(reg);//不推荐!

但都知道不推荐使用eval()方法,所以还是推荐使用构造函数方法。
但还是有个问题,如果子字符串中含有正则表达式中所谓的元字符(即+*?^等),则无法正常匹配。

因为此时正则表达式是在字符串里的,\是字符串中的转义符,也是正则表达式中的转义符。那么只加一个\的话,只能说明在字符串中转义,而js需要进一步把普通字符串中的\变成正则表达式中的\,像是更深一则转化的意思,称为双重转义,这样\以后的意思是正则表达式中的转义符()。
所以对于那些元字符如果不进行双重转义,则无法真正查找要找的那个字符。这个问题尚未解决,不过一般字符串查找也很少有这些特殊字符吧,可以先一用。

结语

感谢您的观看,如有不足之处,欢迎批评指正。

获取资料

本次给大家推荐一个免费的学习群,里面概括移动应用网站开发,css,html,webpack,vue node angular以及面试资源等。
对web开发技术感兴趣的同学,欢迎加入Q群:619586920,不管你是小白还是大牛我都欢迎,还有大牛整理的一套高效率学习路线和教程与您免费分享,同时每天更新视频资料。
最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。

相关文章

  • 10个正则技巧

    1.匹配模式 正则表达式查找与模式匹配的字符串部分 在JavaScript中,它们是在正斜杠之间//或使用new ...

  • 解析JavaScript 正则表达式与字符串查找

    今天小编就为大家分享一篇JavaScript 正则表达式与字符串查找方法,写的十分的全面细致,具有一定的参考价值,...

  • 正则表达式

    正则表达式应用场景:1.在IDE中使用正则表达式处理规则复杂的字符串查找、替换需求2.在JavaScript程序设...

  • 原生js的基础方法等二

    JavaScript 正则表达式 正则表达式模式 调试 this JSON 字符串转换为 JavaScript 对...

  • Re库(正则表达式)熟悉

    正则表达式是处理字符串的强大工具,主要用于检索、查找、替换,在爬虫里主要用于解析HTML页面信息。1.正则表达式模...

  • 正则表达式

    正则表达式的语法: 搭配正则表达式的一些方法 search() 用于查找某特定字符串,如果查找到该字符串,则返回...

  • JavaScript - json字符串解析

    json字符串解析 JavaScript 字符串与 JSON 字符串最大的区别在于,JSON 字符串必须使用双引号...

  • JavaScript中登录名的正则表达式及解析(0基础)

    简言 在JavaScript中,经常会用到正则表达式来进行模式匹配。例如,登录名验证,密码强度验证,字符串查找或替...

  • 正则表达式相关笔记

    通过正则表达式查找出所有匹配字符串

  • 2018年7月3日【Python学习笔记】

    一、正则表达式 正则表达式主要用于字符串查找‘匹配、分割 import re match(正则表达式字符串,需要匹...

网友评论

    本文标题:解析JavaScript 正则表达式与字符串查找

    本文链接:https://www.haomeiwen.com/subject/vblfjqtx.html