相关疑难解决方法(0)

为什么带有全局标志的RegExp会产生错误的结果?

当我使用全局标志和不区分大小写的标志时,这个正则表达式有什么问题?查询是用户生成的输入.结果应该是[true,true].

var query = 'Foo B';
var re = new RegExp(query, 'gi');
var result = [];
result.push(re.test('Foo Bar'));
result.push(re.test('Foo Bar'));
// result will be [true, false]
Run Code Online (Sandbox Code Playgroud)

var reg = /^a$/g;
for(i = 0; i++ < 10;)
   console.log(reg.test("a"));
Run Code Online (Sandbox Code Playgroud)

javascript regex

254
推荐指数
4
解决办法
4万
查看次数

为什么相同的RegExp表现不同?

可能重复:
Javascript RegExp的有趣测试
正则表达式测试无法在true和false之间做出决定(JavaScript)

问题的例子.在内联运行时,结果如我所料.但是当存储为变量时,它会跳过中间跨度元素.

// Inline RegExp
function getToggleClasses() {
  var toggler = [],
      elements = document.getElementsByTagName("*"),
      i=0,
      len = elements.length;

  for (i; i < len; i++) {
    if (/toggler/g.test(elements[i].className)) {
      toggler.push(elements[i]);
    }
  }

  document.getElementById('results').innerHTML += "<br />Inline: " + toggler.length;
}

// Variable
function getToggleClasses2() {
  var toggler = [],
      elements = document.getElementsByTagName("*"),
      tester = /toggler/g,
      i=0,
      len = elements.length;

  for (i; i < len; i++) {
    if (tester.test(elements[i].className)) {
      toggler.push(elements[i]);
    }
  }

  document.getElementById('results').innerHTML += "<br />Variable: …
Run Code Online (Sandbox Code Playgroud)

javascript regex

12
推荐指数
1
解决办法
329
查看次数

Javascript正则表达式与.test()

> var p = /abc/gi;
> var s = "abc";
> p.test(s);
  true
> p.test(s);
  false;
Run Code Online (Sandbox Code Playgroud)

当我在Chrome控制台上运行此代码时,我在上面输出了此输出.每次我调用'.test()',我都会得到不同的价值.有人可以向我解释为什么会这样吗?谢谢

javascript regex

7
推荐指数
2
解决办法
1591
查看次数

标签 统计

javascript ×3

regex ×3