我正在学习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
更新示例:
var re = new RegExp("/[a-z]/i");
re.test('h');
// returns 'false' (I'm expecting this to be true)
答案 0 :(得分: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]);
<强>图案强>
正则表达式的文本。
<强>标志强>
如果指定,flags可以包含以下值的任意组合:
克
全球比赛
I 的
忽略大小写
米
多行;将开始和结束字符(^和$)视为多行(即匹配每行的开头或结尾(由\ n或\ r分隔),而不仅仅是整个输入字符串的开头或结尾)< / p>
ý
粘;仅匹配目标字符串中此正则表达式的lastIndex属性指示的索引(并且不会尝试与任何后续索引匹配)。这允许角色的匹配启动功能&#34; ^&#34;通过更改lastIndex属性的值,有效地在字符串中的任何位置使用。
答案 1 :(得分:2)
如果您想创建 RegExp Object ,则必须提供正确的语法。
语法:
var re = new RegExp(pattern, modifiers);
var re = /pattern/modifiers;
所以你可以在这里使用以下任何一种。
var re = new RegExp('[a-z]', 'i');
var re = /[a-z]/i;