Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式在线匹配,但运行时不匹配_Javascript_Regex_Node.js - Fatal编程技术网

Javascript 正则表达式在线匹配,但运行时不匹配

Javascript 正则表达式在线匹配,但运行时不匹配,javascript,regex,node.js,Javascript,Regex,Node.js,我对正则表达式有一个非常奇怪的问题。这是我的表达: const csrfRegex=/“csrf\u令牌”:“(\ \”[^“])*)”/ig 这样做的目的是从已删除站点上的Javascript对象中提取CSRF令牌。本页摘录如下: [...] <script type="text/javascript">window._sharedData = { "config": {"viewer": null, "csrf_token": "rYzP3AWdRFIoz9UJbyholRAX5

我对正则表达式有一个非常奇怪的问题。这是我的表达:

const csrfRegex=/“csrf\u令牌”:“(\ \”[^“])*)”/ig

这样做的目的是从已删除站点上的Javascript对象中提取CSRF令牌。本页摘录如下:

[...]
<script type="text/javascript">window._sharedData = { "config": {"viewer": null, "csrf_token": "rYzP3AWdRFIoz9UJbyholRAX5QSiirCR"}, "display_properties_server_guess": {"viewport_width": 360, "pixel_ratio": 1.5}, "entry_data": {"LoginAndSignupPage": [{}]}, "platform": "web", "qe": {"discovery": {"p": {}, "g": ""}, "us": {"p": {"use_continue_text": "false"}, "g": "continue_vs_signup_text_control_03"}, "ebd": {"p": {}, "g": ""}, "gql": {"p": {}, "g": ""}, "freq": {"p": {}, "g": ""}, "br": {"p": {}, "g": ""}, "feed": {"p": {}, "g": ""}, "su_universe": {"p": {}, "g": ""}, "profile": {"p": {}, "g": ""}, "us_li": {"p": {}, "g": ""}}, "language_code": "en", "environment_switcher_visible_server_guess": true};</script>
[...]

知道为什么会发生这种情况吗?

首先,我认为你不需要内部被捕获的团队,所以我想这应该足够了:

var csrfRegex = /"csrf_token": "((?:\\"|[^"])*)"/i;
使用
(?:)
是非捕获组。然后,您可以通过以下方式轻松获得:

var value = text.match(csrfRegex)[1];

必须删除
str.match()
g
标志才能返回组值。

csrf=csrf\u scrap[0]?我认为…您的主要问题可能是
/g
标志,但是如果不看到其余的代码,就很难判断。
g
修饰符不能是
RegExp\exec
的问题。我得到了rYzP3AWdRFIoz9UJbyholRAX5QSiirCR,请看。@WiktorStribiżew你错了。
var value = text.match(csrfRegex)[1];