正则表达式帮助。修改正则表达式以排除花括号内的内容
regex help. modify regex to exclude content within curly braces
在 javascript 中,我的正则表达式是:
let regEx = new RegExp("([A-Za-z])(?!([^<]+)?>)", "gi");
我的字符串是:
<span class="customer-key">{aaa}</span>bbb {ccc}
在上面的示例中,正则表达式匹配 "aaa"
、"bbb"
和 "ccc"
。
我想更新我的正则表达式以排除大括号内的任何内容,以便它只匹配 "bbb"
。
我该如何更新正则表达式才能做到这一点?谢谢!
尝试(你的正则表达式分隔字母所以我也是)
let regEx = new RegExp("([A-Za-z])(?!([^<]+)?>)(?!([^{]+)?})", "gi");
let str= '<span class="customer-key">{aaa}</span>bbb {ccc}'
let s =str.match(regEx);
console.log(s)
如果你想获得 bbb ,一种选择是使用 dom,找到文本节点并删除花括号之间的内容:
const htmlString = `<span class="customer-key">{aaa}</span>bbb {ccc}`;
let div = document.createElement('div');
div.innerHTML = htmlString;
div.childNodes.forEach(x => {
if (x.nodeType === Node.TEXT_NODE) {
console.log(x.textContent.replace(/{[^}]+}/g, ''));
}
});
请注意,解析 html with a regex 是不可取的。
如果您想从示例字符串中获取 bbb
,另一种选择是匹配您不想保留的内容并将其替换为空字符串。
const regex = /\s*<[^>]+>\s*|\s*{[^}]+}\s*/gm;
const str = `<span class="customer-key">{aaa}</span>bbb {ccc}`;
const result = str.replace(regex, '');
console.log(result);
在 javascript 中,我的正则表达式是:
let regEx = new RegExp("([A-Za-z])(?!([^<]+)?>)", "gi");
我的字符串是:
<span class="customer-key">{aaa}</span>bbb {ccc}
在上面的示例中,正则表达式匹配 "aaa"
、"bbb"
和 "ccc"
。
我想更新我的正则表达式以排除大括号内的任何内容,以便它只匹配 "bbb"
。
我该如何更新正则表达式才能做到这一点?谢谢!
尝试(你的正则表达式分隔字母所以我也是)
let regEx = new RegExp("([A-Za-z])(?!([^<]+)?>)(?!([^{]+)?})", "gi");
let str= '<span class="customer-key">{aaa}</span>bbb {ccc}'
let s =str.match(regEx);
console.log(s)
如果你想获得 bbb ,一种选择是使用 dom,找到文本节点并删除花括号之间的内容:
const htmlString = `<span class="customer-key">{aaa}</span>bbb {ccc}`;
let div = document.createElement('div');
div.innerHTML = htmlString;
div.childNodes.forEach(x => {
if (x.nodeType === Node.TEXT_NODE) {
console.log(x.textContent.replace(/{[^}]+}/g, ''));
}
});
请注意,解析 html with a regex 是不可取的。
如果您想从示例字符串中获取 bbb
,另一种选择是匹配您不想保留的内容并将其替换为空字符串。
const regex = /\s*<[^>]+>\s*|\s*{[^}]+}\s*/gm;
const str = `<span class="customer-key">{aaa}</span>bbb {ccc}`;
const result = str.replace(regex, '');
console.log(result);