为什么全局修饰符无法正常工作
Why does global modifier not work properly?
为什么"g"修饰符在这种情况下不起作用?我认为用逗号分隔变量并添加"g"是将匹配设置为全局匹配的可接受方式吗?
str = "cabeca";
testcases = [];
x = 0;
for (i = 0; i < str.length; i++) {
testcases = str[i];
x = i + 1;
while (x < str.length) {
testcases += "" + str[x];
if (str.match((testcases),"g").length >= 2) {
console.log(testcases);
}
x++;
}
}
当前演示(仍然不起作用)http://jsfiddle.net/zackarylundquist/NPzfH/
您需要
定义一个实际的RegExp
对象。
new RegExp(testcases, 'g');
但请注意,如果字符串包含需要在正则表达式模式中转义的字符,则可能会导致意外结果。
例如
var s = 'test.',
rx = new RegExp(s);
rx.test('test1'); //true, because . matches almost anything
因此,您必须在输入字符串中对其进行转义。
rx = new RegExp(s.replace(/'./, '''.'));
rx.test('test1'); //false
rx.test('test.'); //true
match()
方法只需要一个参数 - 一个正则表达式对象。要像您尝试的那样从字符串构造正则表达式,请使用 RegExp
构造函数:
testcases = new RegExp(str[i],'g');
然后你可以做:
if (str.match(testcases).length >= 2) {
console.log(testcases);
}
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 视频HTML没有'无法在Internet Explorer 11上工作
- 扩展移相器按钮类不工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 正在尝试使用if和else添加类,但无法正常工作
- Jquery FadeIn FadeOut 只工作一次
- Foreach无法在Typescript中工作
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- JS可以在Chrome中工作,但不能在Firefox中工作
- ajaxToolkit PopupControlExtender不工作.过时的
- HTML标记在脚本标记中工作
- javascript扫雷器floodfill算法不能正常工作