当i'I’我期待4岁
Javascript Regex matching only 2 items when i'm expecting 4
此Regex /({{(?!{*textdata.*)#'s*.['w'.]+'.*}})/gm
在chrome上使用regexp只给我两个匹配项(期望值为4)。当我在上使用相同的表达式时http://www.regexr.com/我得到了合适数量的火柴。有人知道可能发生了什么吗?
var passingString = '{{#something}}{{#something}} I THIS What {{#something}}{{#something}} 'n asdasdas {{/something}}';
var test = /({{(?!{*textdata.*)#'s*.['w'.]+'.*}})/gm.exec(passingString)
console.debug(test.length);
exec
.vs match
:exec一次只生成一个结果,需要连续调用exec(),直到生成null。另一方面,Match同时查找所有匹配项。
如果你运行这个,你会得到四个结果:
var passingString = '{{#something}} I HONESTLY CANNOT BELIEVE THIS SHIT {{#something}} I HONESTLY CANNOT BELIEVE THIS SHIT {{#something}}{{#something}} 'n asdasdas {{/something}}';
passingString.match(/({{(?!{*textdata.*)#'s*.['w'.]+'.*}})/gm)
结果:
Array [ "{{#something}}", "{{#something}}", "{{#something}}", "{{#something}}" ]
如果你仍然想要exec
,你需要将其作为while循环运行,当它不再生成任何东西时终止:
var arr;
while (arr = regex.exec(passingString)) {
console.log(arr);
}
这将找到四个条目,然后脱离循环。
您可能想要match
:
passingString.match(/({{(?!{*textdata.*)#'s*.['w'.]+'.*}})/gm)
返回
["{{#something}}", "{{#something}}", "{{#something}}", "{{#something}}"]
而CCD_ 6一次只进行一次匹配(并且长度是由于子匹配)。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 可以't让我的if语句处理js中的html表单输入
- 我可以在json对象中添加一个函数吗
- AngularJS:我可以跳过函数参数回调吗
- 我的单元测试选项是什么
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 我如何找到一个句子中的所有空格并替换忽略它们
- 我可以获得相对于被点击元素的确切点击位置吗
- 我的职位回报太快了,如何做出承诺
- HTML5音频加载和播放获胜'我不能在iPad上工作
- 我的jQuery插件参数没有正确启动,遇到了问题
- 如何识别我的网站中的慢速设备
- 当i'I’我期待4岁
- 有人可以解释我如何像我五岁一样进行 JSONP 调用
- JSLint不期待我的波浪号
- 我可以期待在jQuery中的点击功能
- “期待更多源字符”;在我的Javascript
- 我需要限制年龄为18岁以下的年龄从当前日期在Php
- Jslint期待!!相反,我看到了
- 如何使用JavaScript加载本地JSON文件来更新html中的选择列表??(期待简单的答案,我只是一个初学者)