首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript Regex -9位数字

Javascript Regex -9位数字
EN

Stack Overflow用户
提问于 2012-08-16 21:40:08
回答 5查看 57.1K关注 0票数 7

我正在尝试在Javascript中验证一个包含9位数字的变量。这应该是基本的,但由于某些原因,这是失败的:

代码语言:javascript
复制
    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!'); 
    }

有谁知道为什么我找不到匹配的吗?

我还尝试使用以下命令对整数进行类型转换测试:

代码语言:javascript
复制
test = Number(test);

...but这不起作用,因为它必须是一个字符串才能支持.match方法。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-08-16 21:43:02

您正在混合two different regex constructors。选择一个:

代码语言:javascript
复制
 var pattern = new RegExp("^\\d{9}$");
 // or
 var pattern = /^\d{9}$/;

N.B.您可能希望添加开始锚点和结束锚点(如上所述),以确保整个字符串匹配。

票数 21
EN

Stack Overflow用户

发布于 2012-08-16 21:42:24

您正在将regex literal syntax与RegExp类混合在一起。尝试:

代码语言:javascript
复制
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位数字的字符串。您可以将其更改为:

代码语言:javascript
复制
var pattern = /^\d{9}$/;
票数 7
EN

Stack Overflow用户

发布于 2012-08-16 21:43:06

使用new Regexp()构造函数时,不应包含/分隔符,因为它们在表达式中被视为文字。

此外,您的表达式应该锚定为^$,以确保它不包含除九位数字以外的其他字符。

代码语言:javascript
复制
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()的正则表达式文字通常是更好的策略,因为它避免了额外的反斜杠转义。

代码语言:javascript
复制
var pattern = /^\d{9}$/;
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11988445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档