对HTML属性进行Regex多重匹配
Regex multiple matches for HTML attributes
我想用JavaScript正则表达式匹配多个data-i18n
属性。
我尝试了以下正则表达式:
var regexp = /(data'-i18n="[^"]+")/g;
在我的脑海里,这似乎很直接,但最终没有奏效。
如果您尝试在以下HTML标签上匹配:
<a random-attr="ok" data-i18n="first match" data-i18n="second match">my text</a>
做这样的高管:
/(data'-i18n="[^"]+")/g.exec('<a random-attr="ok" data-i18n="first match" data-i18n="second match">my text</a>')
将引发以下问题:
- 有两个匹配项,但它们实际上是重复的匹配项
结果是:
[ 'data-i18n="first match"',
'data-i18n="first match"',
index: 20,
input: '<a random-attr="ok" data-i18n="first match" data-i18n="second match">my text</a>' ]
- 关于如何为我的属性设置多个匹配项,有什么想法吗
提前感谢!
问题不在于正则表达式;它与你期望exec
的行为方式有关。exec
的返回值在位置0处具有完全匹配,然后是其后的每个捕获组的匹配。由于您将整个正则表达式封装在一个捕获组中,因此在数组的0和1位置可以看到相同的字符串。
将全局正则表达式与exec
一起使用的正确方法是继续调用exec
,直到它返回null
;它每次都会返回下一场比赛。但是,如果您使用String.match(Regexp)
,它将返回您所期望的内容——一个包含所有匹配项的数组。
相关文章:
- 如果匹配项在特定的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) -获得所有数字和句号