我的代码如下所示
var html = $(el).html().toString();
html = '2012-05-10';
var re = new RegExp('^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$');
var m = re.exec(html);
if (m != null)
alert('match');
else
alert('nomatch');
regexp的目的是检查字符串是否包含任何日期。但它从未找到任何日期。我使用在线regexp工具测试了regexp。
答案 0 :(得分:1)
如果您要查找whether a string contains any dates
,那么在开始时^
$
并不会有帮助 - 因为它们表示匹配开头和结尾< em> of string 。
要在包含其他文本(甚至是空格)的字符串中查找日期,请使用此...
<击> 撞击>
<击>var re = new RegExp('(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])');
击> <击> 撞击>
更新
Anton已经找到了解决方案 - 但是,虽然上述解决方案比原始解决方案更好,但它仍然不正确,因为\d
需要转义(到\\d
)才能它包含在引号内时可以工作。所以应该是...
var re = new RegExp('(19|20)\\d\\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])');
然而,事后我同意所有其他人的观点,因为它不是动态模式,最好的解决方案是使用/pattern/
语法
答案 1 :(得分:0)
我做了@Utkanos说并使用了/ pattern / -syntax而不是像这样
if (/(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])/.test(html))
然后它起作用了:)