0

我想要帮助使用正则表达式解决问题。

我编写了以下 JavaScript 代码:

var s = '/Date(1341118800000)/';
var regex = new RegExp('^/Date\(\d+\)/$');
if ( typeof s === 'string' && s.match(regex) )
    s = 'abc';
alert (s);

我写了一个正则表达式,我想匹配以以下确切字符开头的字符串:/Date(后跟一个或多个数字,后跟确切字符)/,仅此而已。

在上面的 JavaScript 代码中,我希望字符串 'abc' 应该分配给s,但在这段代码的结尾,值s是 '/Date(1341118800000)/'。

我怎样才能解决这个问题?

4

3 回答 3

1

转义斜线已被字符串消耗,即"\(" === "(". 生成的未转义字符串被传递给new RegExp,它被解释(为一个特殊字符。

您应该使用正则表达式文字并转义/s :

var regex = /^\/Date\(\d+\)\/$/;

要测试字符串是否匹配,您可以使用:

regex.test(s);
于 2012-07-27T18:50:24.623 回答
0

问题是在javascript中"/^/Date\(\d+\)/$/"转换为。"/^/Date(d+)/$/"

"/^/Date\(\d+\)/$/" == "/^/Date(d+)/$/" // returns true

因此,只需转义退格键 ,\即可解决问题。

var regex = new RegExp('^/Date\\(\\d+\\)/$');

于 2012-07-27T18:51:47.693 回答
0

我相信您正在寻找此代码:

var s = '/Date(1341118800000)/';
s = s.match(/^\/Date\((\d+)\)\/$/)[1];
alert(s);

在这里测试一下。

于 2012-07-27T19:02:59.317 回答