0

我在 Java 控制台中收到此错误:“SyntaxError:未终止的正则表达式文字”

我真的不明白。下面是我的代码,如果有人能指出我错过了什么,我将永远感激不尽。

PHP代码:

print '
<script type="text/javascript">
function fakeUpload() {
    $("#fakeupload").val(this.files && this.files.length ? this.files[0].name : this.value.replace(/^C:\\fakepath\\/i, ""));
}
</script>';

谢谢。

4

2 回答 2

2

两个斜线 ( \\) 在 PHP ( \) 的输出中变成一个斜线。您必须写四个斜杠 ( \\\\)。

让我们看看您当前代码的输出:

this.value.replace(/^C:\fakepath\/i, "");

最后一个反斜杠转义正则表达式终止符(正斜杠),因此正则表达式终端未终止。

这是更新代码的输出:

this.value.replace(/^C:\\fakepath\\/i, "");
---------------------------------^^
escapes                           |
----------------------------------|

最后一个反斜杠不会影响任何内容,因为它被前面的反斜杠转义了。

于 2013-09-22T17:55:12.177 回答
1

你在这里错过了一个转义斜线

this.value.replace(/^C:\\fakepath\\//i, ""));
                                    ^

像这样试试

<?php
print '
<script type="text/javascript">
function fakeUpload() {
    $("#fakeupload").val(this.files && this.files.length ? this.files[0].name : this.value.replace(/^C:\\fakepath\\//i, ""));
}
</script>';
于 2013-09-22T17:54:46.510 回答