为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript RegEx不工作

JavaScript RegEx不工作

JavaScript RegEx不工作我有以下javascript代码:    function checkLegalYear() {         var val = "02/2010";          if (val != '') {            var regEx = new RegExp("^(0[1-9]|1[0-2])/\d{4}$", "g");             if (regEx.test(val)) {                //do something             }             else {                //do something             }         }     }但是,对于我通过的任何值(02/2010),我的regEx测试总是返回false。我的代码有什么问题吗?我已经在各种在线javascript编辑器上尝试了这段代码,它运行得很好。
查看完整描述

2 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

因为要从字符串中创建正则表达式,所以必须加倍使用反斜杠:

var regEx = new RegExp("^(0[1-9]|1[0-2])/\\d{4}$", "g");

当您以字符串开头时,您必须考虑这样一个事实,即正则表达式将首先被解析为字符串常量&也就是JavaScript字符串常量。字符串常量的语法对正则表达式一无所知,它对反斜杠字符也有自己的用法。因此,当解析器使用正则表达式字符串完成时,它看起来将与查看源代码时大不相同。源字符串看起来像

"^(0[1-9]|1[0-2])/\d{4}$"

但是在字符串解析之后

^(0[1-9]|1[0-2])/d{4}$

请注意\d现在只是d.

通过将反斜杠字符加倍,您将告诉字符串解析器您需要字符串值中的单个实际反斜杠。

这里真的没有理由不使用正则表达式语法,而是:

var regEx = /^(0[1-9]|1[0-2])\/\d{4}$/g;

编辑-我还注意到有一个嵌入的“/”字符,如果使用regex语法,必须引用它。


查看完整回答
反对 回复 2019-07-20
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

var regex 1=RegExp(‘^([0-2][0-9]|(3)[0-1](\/)(0)[0-9])|((1)[0-2]))(\/)d{4}$’,‘g’);var str1=‘16/12/2018’;sole.log(regex1.test(Str1);/预期输出:当我在regex 101,16/12/2018中测试时,返回true,但是当我在javascript文件中使用它时,ity总是返回false,为什么?

查看完整回答
反对 回复 2019-07-20
  • 2 回答
  • 0 关注
  • 578 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信