在无法声明字符串的情况下,如何在 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();
希望你下次理解并提出更清晰的问题,并写下你真正的问题点和所需修复的用途。
这里是 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();
希望你下次理解并提出更清晰的问题,并写下你真正的问题点和所需修复的用途。