所以基本上,我有一個正則運算式
var regex1 = /10661\" class=\"fauxBlockLink-linkRow u-concealed\">([\s\S]*?)<\/a>/;
var result=text.match(regex1);
user_activity = result[1].replace(/\s/g, "")
console.log(user_activity);
我想做的是這個
var number = 1234;
var regex1 = /${number}\" class=\"fauxBlockLink-linkRow u-concealed\">([\s\S]*?)<\/a>/;
但它不起作用,當我嘗試使用 RegExp 時,我不斷收到錯誤。
uj5u.com熱心網友回復:
您可以使用模板和/或字串添加構建正則運算式字串,然后將其傳遞給RegExp建構式。這樣做的一個關鍵是使轉義正確,因為您需要額外的反斜杠轉義級別,因為字串的解釋需要一級反斜杠,但是當它到達 RegExp 建構式時,您需要一個反斜杠來生存。這是一個作業示例:
function match(number, str) {
let r = new RegExp(`${number}" >([\\s\\S]*?)<\\/a>`);
return str.match(r);
}
const exampleHTML = '<a href="something" >Some link text</a>';
console.log(match(1234, exampleHTML));
請注意,像這樣使用正則運算式匹配 HTML 變得對順序非常敏感(而 HTML 本身對順序不敏感)。而且,您的正則運算式在 HTML 不需要的類之間需要一個空格。如果類名在<a>標簽中的順序略有不同或間距不同,那么它將不匹配。根據您真正想要做的事情,可能有更好的方法來決議和使用不區分順序的 HTML。
uj5u.com熱心網友回復:
您可以使用RegExp從字串創建正則運算式并使用該字串中的變數。
var number = 1234;
var regex1 = new RegExp(`${number}aa`);
console.log("1234aa".match(regex1));
uj5u.com熱心網友回復:
我用Adem的方法解決了,
function escapeRegExp(string) {
return string.replace(/[.* ?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
var number = 1234;
var firstPart = `<a href="/forum/search/member?user_id=${number}" >`
var regexpString = escapeRegExp(firstPart) '([\\s\\S]*?)' escapeRegExp('</a>');
console.log(regexpString)
var sample = `<a href="/forum/search/member?user_id=1234" > </a>`
var regex1 = new RegExp(regexpString);
console.log(sample.match(regex1));
首先,問題實際上是我讀取檔案的方式,我應用匹配的資料是未定義的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/472094.html
標籤:javascript html 节点.js 正则表达式 变量
