我正在学习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)
你不需要/使用它时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属性的值,在字符串中的任何位置有效地使用字符"^"的仅匹配启动功能.