每个 HTML div 需要项目
Each HTML div Requires item
HTML:
<div><input type="text" name="">{name}</div>
<div><input type="radio" name="{demo}" value="{yes}"></div>
<div><input type="radio" name="{demo}" value="{no}"></div>
JS:
$.each($('div'), function (k, v) {
var s = $(v).html();
console.log(s.match(/{(.*)}/gi));
});
我正在尝试解析包裹在 {
花括号}
.
中的所有项目
我希望看到以下结果:
['{name}', '{demo}', '{yes}', '{no}']
但是当我 运行 代码时,我得到的是:
['{name}', '{demo} value="{yes}', '{demo} value="{no}']
/{(.*)}/gi
在您的正则表达式中,*
量词默认为 "greedy"。这意味着它将尝试尽可能多地捕获。因此,您获得的匹配范围比您预期的要广。
一个解决方案是通过添加 ?
:
让您的 *
运算符 "lazy"
/{(.*?)}/gi
更好的解决方案是使用字符 class 来匹配所有非 }
的字符,而不是匹配任何 .
:
的字符
/{([^}]*)}/gi
<div><input type="text" name="">{name}</div>
<div><input type="radio" name="{demo}" value="{yes}"></div>
<div><input type="radio" name="{demo}" value="{no}"></div>
var t = ["{name}":"Name","{yes}":Yes,"{no}":"No i didnt"]
$.each($('div'),function(k,v){
var var s = $(v).html();
var d = s.match(/{([^}]*)}/gi);
$(v).html(t[d]);
});
值不变
HTML:
<div><input type="text" name="">{name}</div>
<div><input type="radio" name="{demo}" value="{yes}"></div>
<div><input type="radio" name="{demo}" value="{no}"></div>
JS:
$.each($('div'), function (k, v) {
var s = $(v).html();
console.log(s.match(/{(.*)}/gi));
});
我正在尝试解析包裹在 {
花括号}
.
我希望看到以下结果:
['{name}', '{demo}', '{yes}', '{no}']
但是当我 运行 代码时,我得到的是:
['{name}', '{demo} value="{yes}', '{demo} value="{no}']
/{(.*)}/gi
在您的正则表达式中,*
量词默认为 "greedy"。这意味着它将尝试尽可能多地捕获。因此,您获得的匹配范围比您预期的要广。
一个解决方案是通过添加 ?
:
*
运算符 "lazy"
/{(.*?)}/gi
更好的解决方案是使用字符 class 来匹配所有非 }
的字符,而不是匹配任何 .
:
/{([^}]*)}/gi
<div><input type="text" name="">{name}</div>
<div><input type="radio" name="{demo}" value="{yes}"></div>
<div><input type="radio" name="{demo}" value="{no}"></div>
var t = ["{name}":"Name","{yes}":Yes,"{no}":"No i didnt"]
$.each($('div'),function(k,v){
var var s = $(v).html();
var d = s.match(/{([^}]*)}/gi);
$(v).html(t[d]);
});
值不变