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

时间:2016-01-22 10:02:00

标签: javascript regex

我有一个基本的正则表达式,它应该在最后一个反斜杠getSum($teams[2]['AREA IV']之后返回字符串。

正则表达式:

\

Regex101 中正常工作。

输出

  

random.html

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



/([^\\]*$)/




输出

  

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

2 个答案:

答案 0 :(得分:6)

问题不在于RegEx,它与字符串本身有关。在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.

答案 1 :(得分:1)

*匹配列表中不存在的单个字符。

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

问题不在于RegEx,它与字符串本身有关。在JavaScript中,字符串"C:\\fakepath\\extra\\random.html" 用于转义后续字符。 要在字符串中使用反斜杠,请使用前面的反斜杠转义它们。

{{1}}