gpt4 book ai didi

javascript - 正则表达式匹配非空格字符

转载 作者:行者123 更新时间:2023-11-28 07:44:44 37 4
gpt4 key购买 nike

我正在尝试使用 JavaScript 和正则表达式从 Netscape 格式的 cookie 文件中提取 cookie。使用的正则表达式适用于 php 和 python,但由于某种原因,它不适用于 JavaScript。它不返回任何匹配项。当我使用 [^\s] 而不是 [\S] 时,它会给出匹配项,但会剪掉字符“s”,这不是最佳的......无论如何,这是代码和测试字符串,请告诉我是否有明显的内容。

function readCookies(){
fs.readFile(myArgs[0], 'utf8', function (err,data) {
if (err) {
return console.log(err);
}
console.log(data);
var rx = new RegExp("(\S*?)\t(\S*?)\t(\S*?)\t(\S*?)\t(\S*?)\t(\S*?)\t(\S+)", "g");
var matches = new Array();
var name = true;
while((match = rx.exec(data)) !== null){
console.log(String(match[1]).trim())
}
});
}

测试字符串:

 # Netscape HTTP Cookie File
# http://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

sffd.com FALSE / FALSE 1418953710 proimg 709c76
sffd.com FALSE / FALSE 1418953710 proimg1 709c76
.sffd.com FALSE / FALSE 1418953710 proimg2 709c76

最佳答案

问题在于您没有转义 RegExp 字符串中的反斜杠。另一种方法是使用 RegExp 文字语法:

var rx = /(\S*?)\t(\S*?)\t(\S*?)\t(\S*?)\t(\S*?)\t(\S*?)\t(\S+)/g;

另外,在一个不相关的注释中,您介绍了 match据我所知,作为一个全局性的。所以你可能想添加 var match;在 while 循环之前。

关于javascript - 正则表达式匹配非空格字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27566685/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com