JavaScript RegExp,然后运行。test()不会';好像不行
我认为通过实例化一个pattern=new RegExp()并传递一个字符串,然后使用.test(value)与使用/^…$/.test(value)是一样的,但它们似乎并不等同于使用RegExp,每次传递一个字符串都会失败。这不对吗?似乎有人说这应该行得通 如果所有人都失败了,他们会这样做吗JavaScript RegExp,然后运行。test()不会';好像不行,javascript,regex,Javascript,Regex,我认为通过实例化一个pattern=new RegExp()并传递一个字符串,然后使用.test(value)与使用/^…$/.test(value)是一样的,但它们似乎并不等同于使用RegExp,每次传递一个字符串都会失败。这不对吗?似乎有人说这应该行得通 如果所有人都失败了,他们会这样做吗 var str = "7D>"; var res = /^[A-Za-z0-9\d=!\-@._*]*$/.test(str); console.log(res); // false which i
var str = "7D>";
var res = /^[A-Za-z0-9\d=!\-@._*]*$/.test(str);
console.log(res); // false which is correct
var patt = /^[A-Za-z0-9\d=!\-@._*]*$/;
var res = patt.test(str);
console.log(res); // false which is correct
var patt = new RegExp("/^[A-Za-z0-9\d=!\-@._*]*$/");
var res = patt.test(str);
console.log(res); // false which is correct, but suspicious based on follow results
应该都过去了,但他们没有
var str = "7D";
var res = /^[A-Za-z0-9\d=!\-@._*]*$/.test(str);
console.log(res); // true which is correct
var patt = /^[A-Za-z0-9\d=!\-@._*]*$/;
var res = patt.test(str);
console.log(res); // true which is correct
但这两次尝试都在应该通过的时候失败了
var patt = new RegExp("/^[A-Za-z0-9\d=!\-@._*]*$/");
var res = patt.test(str);
console.log(res); // false which is NOT correct
var patt = new RegExp("^[A-Za-z0-9\d=!\-@._*]*$");
var res = patt.test(str);
console.log(res); // ALSO false which is NOT correct
两件事:
/
var patt = new RegExp("/^[A-Za-z0-9\d=!\-@._*]*$/");
应该是
var patt = new RegExp("^[A-Za-z0-9\\d=!\\-@._*]*$");
// ^ ^^ ^^ ^
如果有标志,则应将其作为第二个字符串参数包含:
var patt = new RegExp("^[a-z\\d=!\\-@._*]*$", "i");
旁注:
\d
表示规范中定义为0-9
的“数字”,因此字符类中有0-9
和\d
是多余的两件事:
/
var patt = new RegExp("/^[A-Za-z0-9\d=!\-@._*]*$/");
应该是
var patt = new RegExp("^[A-Za-z0-9\\d=!\\-@._*]*$");
// ^ ^^ ^^ ^
如果有标志,则应将其作为第二个字符串参数包含:
var patt = new RegExp("^[a-z\\d=!\\-@._*]*$", "i");
旁注:
\d
表示规范中定义为0-9
的“数字”,因此字符类中有0-9
和\d
是多余的您必须将传递给新RegExp
的字符串中的\-
转义为\-
。否则,请将-
放在字符集的末尾。@torazaburo:开始,而不是结束。编辑:嘿,很有趣,两个都有用。知道这些很有用。至少有一个我使用的rex引擎(不是JavaScript)在结尾处使用了-
表示字符类没有上限。@T.J.Crowder begin或end?@torazaburo:显然是的。您必须将传递给新RegExp
的字符串中的\-
转义为\-
。否则,请将-
放在字符集的末尾。@torazaburo:开始,而不是结束。编辑:嘿,很有趣,两个都有用。知道这些很有用。至少有一个我使用的rex引擎(不是JavaScript)在结尾处使用了-
,这意味着字符类没有上限。@T.J.Crowder start或end?@torazaburo:显然是的。