我正在尝试创建一个正则表达式来匹配类似的字符串,<tag>something</tag>并且我希望结果仅返回something不带标签的返回值。
我尝试使用:
string.match(/(?<=<tag>).*?(?=<\/tag>)/g);
Run Code Online (Sandbox Code Playgroud)
但它给出了一个错误:
SyntaxError:Invalid regular expression: /(?<=<tag>).*?(?=<\/tag>)/: Invalid group;
为什么它不起作用?
我想你会喜欢这样
/(?:<(tag)>)((?:.(?!<\/\1>))+.)(?:<\/\1>)/g
Run Code Online (Sandbox Code Playgroud)


这很方便,因为后向\1 引用匹配标记对
在这样的文字上使用它
var re = /(?:<(tag)>)((?:.(?!<\/\1>))+.)(?:<\/\1>)/g,
str = "this is <tag>some text</tag> and it does <tag>matching</tag>",
match;
while ((match = re.exec(str)) !== null) {
console.log(match[1], match[2]);
};
Run Code Online (Sandbox Code Playgroud)
输出量
tag some text
tag matching
Run Code Online (Sandbox Code Playgroud)
苏打水!你可以简单的修改(tag)是(tag|bonus|soda)有它的这个字符串工作
<tag>yay</tag> and there's even <bonus>sodas</bonus> in <soda>cans</soda>
Run Code Online (Sandbox Code Playgroud)
注意,如果嵌套标签,则必须递归应用此正则表达式。
| 归档时间: |
|
| 查看次数: |
4728 次 |
| 最近记录: |