在无法声明字符串的情况下,如何在 java 脚本中获取正则表达式匹配的第 1 组结果?

how can I get the results of group 1 of a regex match in java script while I can't declare the string?

这里是 regex demo

正则表达式

getObj\("Frm_Logintoken"\).value = "(.*)";

这是测试字符串

getObj("Frm_Logintoken").value = "3";

我只想得到不带引号的数字“3”

它在比赛的第 1 组中,但我不知道如何从该组中获取它。

我不能 var myString = "something format_abc";

因为我这样做是为了获得我不知道的价值!!

并在控制台结果中对此进行测试

var test = /getObj("Frm_Logintoken").value = "(.*)";/g

未定义

console.log(测试1); 不明确的 未定义

the same question but in a different way and detailed still unanswered

我试过了

getObj\("Frm_Logintoken"\).value = "(.*)";`.match(/getObj\("Frm_Logintoken"\).value = "(.*)";/)[1]

它给我这个“(.*)”不是想要的值!!!

一些笔记

1-该值不是静态的

2- 我想让代码自动运行,所以获取行“getObj("Frm_Logintoken").value = “3”;” 手动从页面代码是不需要的东西。

3- 我想制作一个无需任何用户干预的自动登录脚本。

4- 如果您仍然不明白问题,请参阅链接

谢谢

您可以通过访问匹配值的索引来访问分组

let str = `getObj("Frm_Logintoken").value = "3";`

let op = str.match(/getObj\("Frm_Logintoken"\).value = "(.*)";/)

console.log(op[1])

必须先声明字符串!

因此,如果您尝试从当前页面 html 代码中获取值,您可以

let str = document.body.innerHTML;
let pattern =/\bgetObj\("Frm_Logintoken"\)\.value = "([^"]+)";/;
console.log(str.match(pattern)[1]); 

并且如果您尝试使用 XMLHttpRequest

从其他页面获取 html 字符串

你可以做到这一点

let str = (http.responseText);

完整代码:

const http = new XMLHttpRequest();
const url = 'http://page/';
http.open('get', url, false);
http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');

  http.onreadystatechange = function ()
    {
        if(http.readyState === 4)
        {
            if(http.status === 200 || http.status == 0)
            {
                let str = (http.responseText);
                let pattern =/\bgetObj\("Frm_Logintoken"\)\.value = "([^"]+)";/;
                let results = str.match(pattern)[1];
                    console.log(results);
            }

        }
    }

http.send();

希望你下次理解并提出更清晰的问题,并写下你真正的问题点和所需修复的用途。