我刚开始学习正则表达式。我写了一个基本的程序来测试自己,但是条件语句永远不会触发。这是我的代码:
console.log("running program...")
if("a" == /[a-zA-Z]/){ //if "a" is a letter character (should be true)
console.log("it worked");
};
我的语法的哪一部分是错的?
编辑:感谢quantas,hanky和felix的帮助和解释!
答案 0 :(得分:2)
测试匹配的正确方法是使用test()
函数:
console.log('running program...');
if (/[a-zA-Z]/.test('a')) console.log('it worked');
这将返回一个布尔值,具体取决于给定的字符串是否与正则表达式匹配。要了解有关使用正则表达式的更多信息,请参阅the MDN article on regular expressions。
==
运算符只是检查它们在特定表单中是否是相同的值。您的原始代码刚刚测试了字符串"a"
是否是与RegExp对象/[a-zA-Z]/
相同的对象的引用,并且因为它们不是同一个对象,它将返回false
。当你这样做时:
"a" == /[a-zA-Z]/
在这种情况下,它会将RegExp
对象转换为字符串,然后检查"a"
是否与"/[a-zA-Z]/"
相同,这当然不是真的
答案 1 :(得分:2)
您必须test regex
,而不只是将其与string
进行比较。
var s = "a";
var pattern = /[a-zA-Z]/;
var result = pattern.test(s); // either true or false
//for your condition it is
if(pattern.test(s))
{
console.log("it worked");
}