JavaScript正则表达式代码无法匹配字符和数字
我想用正则表达式解决一个问题 我编写了以下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(后跟一个或多个数字,后跟精确字符)/,仅此
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。)谢谢。这解决了问题。