当我使用全局标志和不区分大小写的标志时,此正则表达式有什么问题?查询是用户生成的输入。结果应该是[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]
var reg = /^a$/g;
for(i = 0; i++ < 10;)
console.log(reg.test("a"));
该RegExp
对象跟踪lastIndex
发生匹配的位置,因此在后续匹配中,它将从上次使用的索引开始,而不是从0开始。
var query = 'Foo B';
var re = new RegExp(query, 'gi');
var result = [];
result.push(re.test('Foo Bar'));
alert(re.lastIndex);
result.push(re.test('Foo Bar'));
如果您不想lastIndex
在每次测试后手动重置为0,只需删除该g
标志即可。
这是规范规定的算法(第15.10.6.2节):
RegExp.prototype.exec(字符串)
对正则表达式执行字符串的正则表达式匹配,并返回包含匹配结果的Array对象;如果字符串不匹配,则返回null。在字符串ToString(string)中搜索正则表达式模式的出现,如下所示:
- 令S为ToString(string)的值。
- 令length为S的长度。
- 令lastIndex为lastIndex属性的值。
- 令我为ToInteger(lastIndex)的值。
- 如果全局属性为false,则让i = 0。
- 如果I <0或I> length,则将lastIndex设置为0并返回null。
7.
调用[[Match]],为其指定参数S和i。如果[[Match]]返回失败,请转到步骤8;否则,请转到步骤8。否则,使r为其State结果,然后转到步骤10。- 令i = i + 1。
- 转到步骤6。
- 令e为r的endIndex值。
- 如果global属性为true,则将lastIndex设置为e。
- 令n为r的捕获数组的长度。(此值与15.10.2.1的NCapturingParens相同。)
- 返回具有以下属性的新数组:
- index属性设置为匹配的字符串在完整字符串S中的位置。
- 输入属性设置为S。
- length属性设置为n + 1。
- 将0属性设置为匹配的子字符串(即,偏移量i包括端和偏移量e排除之间的S部分)。
- 对于使i> 0并且I≤n的每个整数i,将名为ToString(i)的属性设置为r的捕获数组的第i个元素。
我正在使用python 2.7。win8上的9。当我尝试使用matplotlib绘图时,出现以下错误: 从pylab导入* 绘图([1,2,3,4]) [matplotlib.lines.Line2D对象位于0x0392A9D0] 我尝试了测试代码“python simple_plot.py--verbose help”,出现了以下警告: $HOME=C:\Users\XX matplotlib数
我的任务是使用用户填充的int数组合并两个数组,我们必须假设用户最多有10000个输入,用户输入负数停止。然后将数组从最小到最大排序并打印出来。起初我以为这很容易,但当我完成时,我开始得到如下输出: 正如你所看到的,这六个是不合适的,我不知道如何修复它。这是源代码,我已经包括了大量的评论,因为我真的希望你们能帮助我尽你们最大的能力。如果可以使用相同的技术而不在代码中实现新的技术和方法,请这样做。我
我正在努力学习同步。根据我所了解的,下面的代码应该给出8000作为最终结果,但是我得到了一个随机的结果,如下所示; 还是得到1293 2214 1403 3214 4214 5214 6224 7037这样的输出有没有人能给我解释一下如何实现同步,这里出了什么问题?
我试图用< code>Proguard生成一个APK,每次都出现这个错误。它警告我一些我找不到的内部类,并且名称看起来很模糊,如下所示: 类错误:(b . a . a . a . a . a . b . o) 这是我的proGuard文件: 这是我得到的完整错误日志: 错误:警告:忽略匿名内部类的“内部类”属性 错误:(b.a.a.a.a.b.o) 未附带“错误:关联的封闭方法”属性。此类可能是由
当我在本文中使用<code>dplyr::case_when<code>而不是<code>if<code>时,我注意到了下面的这种行为。如果第二个分支的输出是一个显式字符串,它将按预期工作,但如果指定了<code>x</code>本身,结果将发生变化。 为什么只有< code>case_when给出不同的结果? 由reprex软件包(v2.0.1)于2022年8月16日创建