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需要进一步把普通字符串中的\变成正则表达式中的\,像是更深一则转化的意思,称为双重转义,这样\\以后的意思是正则表达式中的转义符(\)。
所以对于那些元字符如果不进行双重转义,则无法真正查找要找的那个字符。这个问题尚未解决,不过一般字符串查找也很少有这些特殊字符吧,可以先一用。
以上这篇JavaScript 正则表达式与字符串查找方法就是长沙网络推广分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持狼蚁SEO。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程