tra*_*vis 2 javascript regex jquery lambda match
我有以下 JavaScript(s 中的空格<P>是不间断的):
var html = '...<li>sub 2</li></ol></li></ol>\n\
<p> i. subsub 1</p>\n\
<p> ii. subsub 2</p>\n\
<ol start="2"> \n\
<ol start="3"> \n\
<li>sub 3</li></ol>...';
$(function () {
var nestedListFixer = /(?:<\/li><\/ol>\s*)+(?:<p>(?:&(?:nbsp|\#0*160|x0*A0);)+(?:\s[ivxlcdm]+\.)(?:&(?:nbsp|\#0*160|x0*A0);)+\s(.*?)<\/p>\s*)+(?:<ol(?:\sstyle=\"[^\"]+\")?\sstart=\"[^\"]+\">\s*)+/i;
html = html.replace(nestedListFixer, function($0, $1){
var lis = ""
$.each($1, function () {
lis += "<li>" + this + "</li>\n";
});
alert("<ol>\n" + lis + "</ol></li>");
return "<ol>\n" + lis + "</ol></li>";
});
});
Run Code Online (Sandbox Code Playgroud)
的alert()输出:
<ol>
<li>s</li>
<li>u</li>
<li>b</li>
<li>s</li>
<li>u</li>
<li>b</li>
<li> </li>
<li>2</li>
</ol></li>
Run Code Online (Sandbox Code Playgroud)
这就是我希望的:
<ol>
<li>subsub 1</li>
<li>subsub 2</li>
</ol></li>
Run Code Online (Sandbox Code Playgroud)
如何正确循环遍历 中的每场比赛$1?
更新:简化的模式和匹配示例:
var text = '1ab2cb3cd4ab5cb6cd7';
$(function () {
var textFixer = /(?:a)(?:b(.*?)c)+(?:d)/i;
text = text.replace(textFixer, function($0, $1){
var numbers = "";
$.each($1, function () {
numbers += this;
});
alert(numbers);
return numbers;
});
alert(text);
});
// actual text:
// 13467
// desired text:
// 1234567
Run Code Online (Sandbox Code Playgroud)
小智 5
正如您所描述的,您给出的更新示例仅匹配“3”而不是“13467”。如果您更改正则表达式以进行全局匹配,它将返回“36”,但仍然不是“13467”。
您的第一个示例也不会输出任何内容。
您是否只是想获取正则表达式的匹配项并循环匹配?
如果是这样,
var text = '1ab2cb3cd4ab5cb6cd7';
var matches = text.match(/(\d)/g);
for (i=0; i<matches.length; i++) {
alert(matches[i]);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10978 次 |
| 最近记录: |