正则表达式没有返回预期值

Zak*_*rki 1 javascript regex

我有一个基本的正则表达式,应该在最后一个反斜杠后返回字符串\.

正则表达式:

/([^\\]*$)/
Run Code Online (Sandbox Code Playgroud)

Regex101正常工作.

输出:

random.html

但是在下面的Javascript示例中没有:

console.log("C:\fakepath\extra\random.html".match(/([^\\]*$)/));
Run Code Online (Sandbox Code Playgroud)

输出:

["C:akepathextra andom.html","C:akepathextra andom.html",索引:0,输入:"C:akepathextra andom.html"]

Tus*_*har 6

问题不在于RegEx,它与字符串本身有关.在JavaScript中,字符串\用于转义以下字符.

字符串

"C:\fakepath\extra\random.html"
Run Code Online (Sandbox Code Playgroud)

在逃跑之后

C:akepathextra
andom.html
Run Code Online (Sandbox Code Playgroud)

要在字符串中使用反斜杠,请使用前面的反斜杠转义它们.

"C:\\fakepath\\extra\\random.html"
Run Code Online (Sandbox Code Playgroud)

console.log("C:\\fakepath\\extra\\random.html".match(/[^\\]*$/));
Run Code Online (Sandbox Code Playgroud)


要获得最后的文本\,请使用String#splitArray#pop

"C:\\fakepath\\extra\\random.html".split('\\').pop() // random.html
                                          ^^ Note: this backslash also need to be escaped.
Run Code Online (Sandbox Code Playgroud)