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

Regex matching non space character

本文关键字:空格 字符 正则表达式      更新时间:2023-09-26

我正在尝试使用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 文字语法:

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

同样在一个不相关的说明中,据我所知,您正在将match介绍为全局。因此,您可能希望在 while 循环之前添加var match;