正则表达式不返回预期值

Regex not returning expected value

本文关键字:返回 正则表达式      更新时间:2023-09-26

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

正则表达式 :

/([^'']*$)/

正则表达式 101 中工作正常。

输出:

随机.html

但不是在下面的Javascript示例中:

console.log("C:'fakepath'extra'random.html".match(/([^'']*$)/));

输出:

["C:阿克帕特尔特 andom.html", "C: akepathextra andom.html",索引: 0, 输入: "C: akepathextra Andom.html"]

问题不在于正则表达式,而在于字符串本身。在 JavaScript 字符串中,'用于转义以下字符。

字符串

"C:'fakepath'extra'random.html"

是逃跑后

C:akepathextra
andom.html

若要在字符串中使用反斜杠,请通过前面的反斜杠对其进行转义。

"C:''fakepath''extra''random.html"

console.log("C:''fakepath''extra''random.html".match(/[^'']*$/));


要获取上次'之后的文本,请使用 String#splitArray#pop

"C:''fakepath''extra''random.html".split('''').pop() // random.html
                                          ^^ Note: this backslash also need to be escaped.

[^'']*匹配列表中不存在的单个字符。

量词* 在零到无限次之间,尽可能多地回馈,根据需要回馈

问题不在于正则表达式,而在于字符串本身。在 JavaScript 字符串中,'用于转义以下字符。要在字符串中使用反斜杠,请通过前面的反斜杠对其进行转义。

"C:''fakepath''extra''random.html"