JavaScript正则表达式代码无法匹配字符和数字

JavaScript正则表达式代码无法匹配字符和数字,javascript,regex,Javascript,Regex,我想用正则表达式解决一个问题 我编写了以下JavaScript代码: var s = '/Date(1341118800000)/'; var regex = new RegExp('^/Date\(\d+\)/$'); if ( typeof s === 'string' && s.match(regex) ) s = 'abc'; alert (s); 我编写了一个正则表达式,希望匹配以以下精确字符开头的字符串:/Date(后跟一个或多个数字,后跟精确字符)/,仅此

我想用正则表达式解决一个问题

我编写了以下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)/”


如何修复此问题?

转义斜杠已被字符串使用,即
“\(“===”(“
)。生成的未转义字符串将传递给
新RegExp
,它将
解释为特殊字符

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

var regex = /^\/Date\(\d+\)\/$/;
要测试字符串是否匹配,可以使用:

regex.test(s);
问题是
“/^/Date\(\d+\)/$/”
在javascript中转换为
“/^/Date(d+)/$/”

“/^/Date\(\d+\)/$/”==“/^/Date(d+)/$/”//返回true

所以只要避开退格,
\
,就可以解决问题


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

我相信您正在寻找以下代码:

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

测试它。

如果没有匹配项,你想使用abc吗?在这种情况下,如果字符串
s
与正则表达式匹配,那么字符串“abc”应该分配给
s
。为什么不干脆
s='/Date(1341118800000)/'=s?“abc”:s;
我尝试了你的修复,但它似乎有效。然而,我遵循的是“备忘单”此处:“《备忘单》”不包括作为应转义字符的
/
。这是备忘单上的错误,还是JavaScript中特定于regex的
/
必须转义?@Daniel Allen Langdon:该表是特定于JavaScript的吗?在JavaScript中,regexp文本包含在
/
中,因此如果需要,需要转义它们按字面意思使用它们。(该表也表示
需要转义,但不使用JavaScript。)谢谢。这解决了问题。