js中正则表达式元字符不起作用的问题……

本文探讨了在JavaScript中使用正则表达式进行日期验证时遇到的问题,并详细解释了正则表达式的两种不同使用方式——字面量模式与构造函数模式的区别及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在项目过程中发现一个问题,在网上拷的一段验证日期的正则表达式在项目中不起作用,在很多在线测试正则表达式的网站上都做过测试,自己也读了正则代码,就是看出来有什么问题:

function checkInDate(inStrdate) {
    var regex = new RegExp("^(?:(?:(\d{4}(-|\/)(?:(?:0?[1,3-9]|1[0-2])(-|\/)(?:29|30)|((?:0?[13578]|1[02])(-|\/)31)))|(\d{4}(-|\/)(?:0?[1-9]|1[0-2])(-|\/)(?:0?[1-9]|1\d|2[0-8]))|(((?:(\d\d(?:0[48]|[2468][048]|[13579][26]))|(?:0[48]00|[2468][048]00|[13579][26]00))(-|\/)0?2(-|\/)29))))$");
    if (!regex.test(inStrdate)) {
        return false;
    }
    return true;
}

通过网上四处漫无目的的找资料以后,终于在斯达克里面看到一条比较靠谱的解答

大概意思就是,在js中,正则表达式有两种用法,一种是使用正则变量的方法来匹配字符串,一种是用字符串的方法来匹配正则表达式。

我这边项目中使用的是第一种方法,正则变量方法匹配字符串。

这种正则的使用方法在js中有两种调用,分别叫做1、字面量模式;2、构造函数模式。

字面量模式:

var reg=/^\d+a/;

构造函数模式:

var reg = new RegExp("^\\d+a");

从上面我举的两个例子来看不难看出这两种模式的区别……主要是在元字符的使用前,字面量模式下使用元字符可以直接调用,而构造函数模式下,需要先转译才能使用……

当然,如果在构造函数模式下觉得每次都转译会比较麻烦,也可以直接使用与元字符相对应的正则表达式,比如“\d”就直接使用“[0-9]”这样子,只是我个人觉得还不如转译一下来得方便……

以上……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值