为什么我得到错误,而测试regexp

Why am i getting false while testing reg exp?

本文关键字:测试 regexp 错误 为什么      更新时间:2023-09-26

为什么下面的脚本返回false ?

var a = new RegExp("/^[A-Za-z]+[A-Za-z's]+$/");
var b = "software engineer";
var c = "software.engineer";
var bool = a.test(b);
document.write(bool);

这是我对reg exp的理解:字符串可以以可能出现一次或不止一次的字母开始,以可能出现一次或不止一次的空格或字母结束。

在这种情况下它应该返回true !

您需要使用:

var a = new RegExp("^[A-Za-z]+[A-Za-z''s]+$");

或:

var a = /^[A-Za-z]+[A-Za-z's]+$/;

所以没有分隔符,如果你使用new RegExpnew RegExp也需要双转义

您将regex定义为字符串,这意味着/分隔符不是必需的,实际上被视为模式的一部分。

语法为:

var regex = /foo/;
or
var regex = new RegExp("foo");

你写你的正则表达式作为一个字符串,所以JS语法干扰正则表达式语法。使用文字代替:

var a = /^[A-Za-z]+[A-Za-z's]+$/;

这相当于:

var a = new RegExp("^[A-Za-z]+[A-Za-z''s]+$");

除了你不需要转义你的反斜杠

您混淆了字符串字面值和正则表达式字面值。使用:

var a = new RegExp("^[A-Za-z]+[A-Za-z''s]+$");

var a = /^[A-Za-z]+[A-Za-z's]+$/;

详细信息请访问https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions。