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



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

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

您必须测试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");
 }

测试匹配的正确方法是使用test()函数:

console.log('running program...');
if (/[a-zA-Z]/.test('a')) console.log('it worked');

这将返回一个布尔值,具体取决于给定的字符串是否与正则表达式匹配。要了解有关使用正则表达式的更多信息,请参阅MDN关于正则表达式的文章。

==运算符只是检查它们在特定形式中是否是相同的值。您的原始代码只是测试字符串"a"是否与RegExp对象/[a-zA-Z]/是对同一对象的引用,由于它们不是同一对象,它将返回false。当你这样做的时候:

"a" == /[a-zA-Z]/

在这种情况下,它会将RegExp对象转换为字符串,然后检查"a"是否与"/[a-zA-Z]/"相同,这当然不是真的。

最新更新