如果不在特定的HTML标记内,则匹配Regex
Match Regex if not inside specific HTML tag
我想从不在特定HTML标记内的HTML中获得特殊格式的字符串({string}
)。
例如,我想匹配{test}
而不是<var>{test}</var>
。
因此,我使用以下正则表达式:(不包括?!
)
(?!<var>)'{'S+?'}(?!<'/var>)
所以这对于有空格的文本非常有效,但是如果我有这样的内容(中间没有空格):
<var>{name}</var>{username}
匹配两个{}
-string: {name}</var>{username}
我如何在这里匹配{username}
?
更新:如果我需要这样做
<var.*?<'/var>|('{'S+?'})
如何获得匹配的值,因为匹配的索引取决于位置。
例子:
匹配1:
"{username}<var>{name}</var>".match(/<var.*?<'/var>|('{'S+?'})/g);
=> ["{username}", "<var>{name}</var>"]
匹配2:
"<var>{name}</var>{username}".match(/<var.*?<'/var>|('{'S+?'})/g);
=> ["<var>{name}</var>", "{username}"]
当前解决方案:
angular.forEach(html.match(regex), function (match) {
if(match.substring(0, 4) !== '<var') {
newAdded = match;
}
});
这真的是JavaScript的"最佳"解决方案吗?
如何使用下面的正则表达式实现这个目标:
/<var.*?<'/var>|('{'S+?'})/g;
var s = '<var>{name}</var>{username}<var>{newname}</var>{another_username}';
var log = [];
var m;
var regex = /<var.*?<'/var>|('{'S+?'})/g;
while ((m = regex.exec(s)) !== null) {
if ( m[1] !== undefined) {
log.push(m[1]);
}
}
alert(log);
相关文章:
- 如果匹配项在特定的html标记中,则跳过regex匹配
- Javascript/RegEx未验证HTML表单
- Regex剥离具有特定属性的html标记
- Regex以转义HTML标记
- Regex有助于突出显示html中匹配文本的角度过滤器
- 使用regex从巨大的html表中查找某些td值
- Javascript Regex替换HTML标记
- regex在JavaScript中拆分一个html字符串
- 对HTML属性进行Regex多重匹配
- 通过HTML验证(RegEx)在电子邮件中验证域
- Javascript多次替换为regex,避免html标记
- 为什么RegEx输出转义文本而不是HTML
- Javascript Regex - 只影响非 html 代码?(即文本)
- 使用 RegEx 查找 HTML 标记之间的内容
- 在Javascript Regex中,如何匹配哈希标签,但不与HTML代码匹配
- Html.TextBoxFor regex 不起作用
- REGEX-在html注释模式之间插入内容
- Regex用HTML标记替换字符
- 使用RegEx替换Body html中的数字
- Regex (HTML/Javascript) -获得所有数字和句号