JavaScript正则表达式返回false?

fab*_*bbb 2 javascript regex

我正在学习javascript,这对我来说没有意义.test()如果字符匹配,则返回true或false.那么有人可以解释为什么我的代码不起作用?

var str = "hello*3";
var arr = str.split('');

for(var i in arr){
    re = new RegExp("/[a-z]/i");
    if(re.test(arr[i])) {
        console.log(String.fromCharCode(arr[i].charCodeAt() + 1));   
    }
}

re.test(arr[0]); //arr[0] == 'h'
// false
Run Code Online (Sandbox Code Playgroud)

更新示例:

var re = new RegExp("/[a-z]/i");
re.test('h');
// returns 'false' (I'm expecting this to be true)
Run Code Online (Sandbox Code Playgroud)

sub*_*aze 5

你不需要/使用它时RegExp,你传递标志作为第二个参数

这应该工作 re = new RegExp("[a-z]", "i");

或文字形式

re = /[a-z]/i;

更多信息可以在MDN上找到https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp

上面的链接中的一些信息

构造函数 文字和构造函数符号是可能的:

/pattern/flags; 
new RegExp(pattern [, flags]);
Run Code Online (Sandbox Code Playgroud)

图案

正则表达式的文本.

如果指定,flags可以包含以下值的任意组合:

G

全球比赛

一世

忽略案例

多; 将开始和结束字符(^和$)视为多行(即匹配每行的开头或结尾(由\n或\ r分隔),而不仅仅是整个输入字符串的开头或结尾)

ÿ

黏; 仅匹配目标字符串中此正则表达式的lastIndex属性指示的索引(并且不会尝试与任何后续索引匹配).这允许通过更改lastIndex属性的值,在字符串中的任何位置有效地使用字符"^"的仅匹配启动功能.