为什么我的条件语句不能在javascript中使用正则表达式?

时间:2013-11-18 03:42:07

标签: javascript regex conditional

我刚开始学习正则表达式。我写了一个基本的程序来测试自己,但是条件语句永远不会触发。这是我的代码:

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的帮助和解释!

2 个答案:

答案 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");
 }