我正在尝试在Javascript中验证一个包含9位数字的变量。这应该是基本的,但由于某些原因,这是失败的:
var test = "123123123";
var pattern = new RegExp("/\d{9}/");
if(test.match(pattern))
{
//This code never executes
}
else
{
//This code is always executing
alert('no match!');
}有谁知道为什么我找不到匹配的吗?
我还尝试使用以下命令对整数进行类型转换测试:
test = Number(test);...but这不起作用,因为它必须是一个字符串才能支持.match方法。
发布于 2012-08-16 21:43:02
您正在混合two different regex constructors。选择一个:
var pattern = new RegExp("^\\d{9}$");
// or
var pattern = /^\d{9}$/;N.B.您可能希望添加开始锚点和结束锚点(如上所述),以确保整个字符串匹配。
发布于 2012-08-16 21:42:24
您正在将regex literal syntax与RegExp类混合在一起。尝试:
var test = "123123123";
var pattern = /\d{9}/;
if(test.match(pattern))
{
alert('match!');
//This code never executes
}
else
{
//This code is always executing
alert('no match!');
}此外,如果您希望确保只包含9位数字,则可能需要更改正则表达式以匹配行的开头和结尾。现在,正则表达式将匹配任何包含9位数字的字符串。您可以将其更改为:
var pattern = /^\d{9}$/;发布于 2012-08-16 21:43:06
使用new Regexp()构造函数时,不应包含/分隔符,因为它们在表达式中被视为文字。
此外,您的表达式应该锚定为^$,以确保它不包含除九位数字以外的其他字符。
var test = "123123123";
// \d would need to be escaped as \\d in RegExp()
var pattern = new RegExp("^\\d{9}$");
// ..Or...
var pattern = new RegExp("^[0-9]{9}$");如果不需要进行字符串操作或在正则表达式中包含变量,则使用不带new Regexp()的正则表达式文字通常是更好的策略,因为它避免了额外的反斜杠转义。
var pattern = /^\d{9}$/;https://stackoverflow.com/questions/11988445
复制相似问题