首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么这个正则表达式不会在Javascript中导致错误?

为什么这个正则表达式不会在Javascript中导致错误?
EN

Stack Overflow用户
提问于 2010-07-01 03:14:59
回答 1查看 118关注 0票数 0

我对不同的正则表达式格式感到有点困惑。

以下方法会导致错误。

代码语言:javascript
运行
复制
function validateDate(str)  {
    var expr = /^((((0?[1-9]|[12]\d|3[01])[\/](0?[13578]|1[02])[\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\/](0?[13456789]|1[012])[\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\/]0?2[\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\/]0?2[\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;
    return validate(expr, str);
}

function validateTime(str)  {
    var expr = /^([0-1]?[0-9]|[2]?[0-3])\:([0-5][0-9])$/;
    return validate(expr, str);
}

function validate(pattern, str) {
    return str.match(pattern);
}

我从网络上获取了以下正则表达式。我认为问题在于某些转义字符

这是怎么回事?

谢谢:)

EN

回答 1

Stack Overflow用户

发布于 2010-07-01 03:17:56

validateDate函数中,您将正则表达式对象赋值给exp变量,但是在下一行中,您将使用expr变量,该变量尚未定义。

编辑:

你期望这些函数返回什么?现在,他们正在返回一个匹配数组。如果希望它们只返回true或false,则可能需要改用test方法:

代码语言:javascript
运行
复制
function validate(pattern, str) {
  return pattern.test(str);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3152590

复制
相关文章

相似问题

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