我需要将元素与具有两个变量行,站点的attrib字符串匹配。该属性是“数据测试”。格式是
data-test =“ siteQtySOMETEXTrow = xxSOMETEXTsite = yySOMETEXT
我认为最简单的方法是使用正则表达式,使用新的RegExp
我遇到了2个问题:1)构建正则表达式,以及2)将正则表达式传递给querySelectorAll
$ENV{HOME}
我认为我已经找到解决方案的大部分方法,但是它没有用。
是正则表达式吗?还是将正则表达式传递到查询中?还是其他?
答案 0 :(得分:0)
我的猜测是,我们希望从字符串中捕获三个变量,为此,我们将简单地使用具有三个组的表达式,就像这样:
^siteQty(.+?)row=(.+?)site=(.*)$
,我们将编写剩下的问题脚本。
我们可能会替换这些组(.+?)
,并在必要时添加其他边界。
const regex = /siteQty(.+?)row=(.+?)site=(.*)/gm;
const str = `siteQtySOMETEXTrow=xxSOMETEXTsite=yySOMETEXT
`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
console.log(/^siteQty(.+?)row=(.+?)site=(.*)$/.test('siteQtySOMETEXTrow=xxSOMETEXTsite=yySOMETEXT'));
要捕获值输入中的小写和大写字母,我们可以使用例如以下表达式:
^siteQty(.+?)row=(([a-z]+)([A-Z]+?))site=(([a-z]+)([A-Z]+))$
^siteQty(.+?)row=(([a-z]+)([A-Z]+))site=(([a-z]+)([A-Z]+))$
const regex = /^siteQty(.+?)row=(([a-z]+)([A-Z]+?))site=(([a-z]+)([A-Z]+))$/gm;
const str = `siteQtySOMETEXTrow=xxSOMETEXTsite=yySOMETEXT
siteQtySOMETEXTrow=xxSOMETEXTsite=yySOMETEXT
iteQtySOMETEXTrow=xxSOMETEXTsite=yySOMETEXT
`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
答案 1 :(得分:0)
因此,最终我为行和列设置了带有虚拟占位符的字符串,然后使用字符串函数替换了虚拟xx / yy值。然后将所有三个选择器放入querySelectorAll
var myq_col = "[data-test*='site=xx']" ;
var myq_col = myq_col.replace("xx",window.myred_col);
var myq_row = "[data-test*='row=xx']" ;
var myq_row = myq_row.replace("xx",window.myred_row);
var myq_site = "[data-test^='siteQty']" ;
console.log(" removing red @ ",myq_col + "|" + myq_row);
var myadd= document.querySelectorAll(myq_site+myq_col+myq_row);