javascript - 如何在 string.match 中添加循环值?
问题描述
如何遍历字符串并将其值添加到匹配方法中的正则表达式中。我越来越空了。试过了 /'str[i]'/g
,它也给出了null。
var str = "helloWorld";
var regResult;
for (var i = 0; i < str.length; i++) {
regResult = str.match(/str[i]/g); //gives null
};
解决方案
现在您的正则表达式正在匹配str
范围内的单个字符i
- 一个i
,表示它将匹配stri
。要匹配变量i
,请尝试以下操作:
var str = "helloWorld";
var regResult;
for (var i = 0; i < str.length; i++) {
regResult = str.match(new RegExp('str' + i, 'g')); //gives null
};
在这里,我们正在创建一个正则表达式,其模式包含变量的当前值i
。例如,如果i
是 4,那么将构造正则表达式,就好像您只是简单地给/str4/g
了str.match
.
编辑
为了反映对问题所做的编辑,我提出的新解决方案如下:
var str = "helloWorld";
var regResult;
for (var i = 0; i < str.length; i++) {
regResult = str.match(new RegExp(str[i], 'g')); //gives null
};
此代码与上述代码的不同之处在于它i
从读取值str
。例如,如果i
是 4 和str[4] = "h"
,那么正则表达式将被构造,就好像您只是给了str[4]
to str.match
:的值一样str.match(/h/g)
。
推荐阅读
- python-2.7 - 如何使用多个写入操作python2模拟文件打开和写入
- adobe-indesign - 将 InDesign 文档与 Word 或 PDF 文件进行比较
- c# - 重用或创建新的 Windows.Web.Http.HttpClient
- javascript - 我不能用 jquery 再次更改 id
- docker - /bin/sh: /root/start-docker.sh: 在 docker 中执行命令时权限被拒绝
- amazon-web-services - 停止没有任何用户登录的 AWS Ec2 实例
- vb.net - DirectCast 对象上的 SelectAll 不起作用
- gis - 如何使用 arcgis Rest API 设置流程?
- php - Laravel,如何将密码重置为用户表中重复的电子邮件
- laravel - 如果数组大小很大,则无法在会话中存储数组 laravel 6